2

JBoss AS 7 で組み込みの Restful WebServices を使用しようとしています。私の web.xml は..

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">

</web-app>

私のアプリケーションクラスは...

package com.robert;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/services")

public class HelloWorld extends Application {
private Set<Object> singletons = new HashSet<Object>();

public HelloWorld() {
    singletons.add(new Library());
}

@Override
public Set<Class<?>> getClasses() {
    Set<Class<?>> classes = new HashSet<Class<?>>();
    classes.add(Library.class);
    return classes;    //To change body of overridden methods use File | Settings | File Templates.
}

@Override
public Set<Object> getSingletons() {
    return singletons;
}

}

そして私のクラスは

import javax.ws.rs.*;

@Path("/library")
public class Library {

@GET
@Path("/books")
public String getBooks() {
    return "this is all your books";
}

@GET
@Path("/book/{isbn}")
public String getBook(@PathParam("isbn") String id) {
    // search my database and get a string representation and return it
    return "Its a good book; I read it";
}

@PUT
@Path("/book/{isbn}")
public void addBook(@PathParam("isbn") String id, @QueryParam("name") String name) {
    System.out.println("Adding book "+name);
}

@DELETE
@Path("/book/{id}")
public void removeBook(@PathParam("id") String id ){
    System.out.println("Removing book "+id);

}

}

ただし、JBoss AS7 を起動しても、WebService は起動しません。JBoss Management ページにも表示されません。

http://foobar:8080/MyWar/services/library/books
4

3 に答える 3

2

わかりました、私は問題を発見しました。RestEasy からの指示に従って、RestEasy の最新バージョンを JBoss モジュールにインストールしました。デフォルトのインストールに戻すと、機能します。JBoss デプロイヤは、クラスに @ApplicationPath アノテーションがある場合に RestEasy を自動デプロイするため、web.xmlに Restful サーブレットへの参照を含めてはならないことに注意してください。Web.xml は空である必要があります。

于 2012-07-20T04:09:34.413 に答える
1

REST サーブレット マッピングを追加する必要があります

web.xmlで、REST サーブレットにサーブレット マッピングを追加する必要があります。次のようになります。

<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

ここで、URL パターンは RESTFUL として処理されるはずのものと一致する必要があります (または /* を使用 - これにより、Rest サーブレットがこのアプリケーションへのすべての要求を処理するようになります)

理由はわかりませんが、JBoss 管理コンソールの Web サービス セクションにRestful Web サービスが表示されていませんが、リストに WSDL SOAP ベースの Web サービスが表示されています。

ただし、管理コンソールの展開の管理セクションに Restful プロジェクトが表示されます

于 2012-07-10T07:11:43.780 に答える
0

アプリを修正するには:

  1. 使用する<web-app version="3.0" ..
  2. @austinの回答のようにサーブレットマッピングを追加します
  3. 2.3.2 Servlet必要に応じて、 jax-rs-1.1仕様のセクションを読んでください。これは、残りの をセットアップするのに役立ちますがweb.xml、例では冗長です。

また、jbossas-7 に付随するhelloworld-rsクイックスタートを JavaEE 6 RESTful Web アプリケーションの出発点として使用することもできます。

于 2012-07-15T11:22:50.120 に答える