0

JBoss AS6 Final(SEAM 2アプリ)でresteasyを動作させようとしていますが、最も基本的な例を動作させることができないようです。理解しているように、resteasyは準備ができているはずです。ここから次の例を試しましたが、 URLは単に応答なしで404エラーになります

package uk.co.rest.test;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;

public class Library extends Application {

    @GET
    @Path("/books")
    public String getBooks() {
        System.out.println("Check");
        return "done";
    }

}

以下を私のweb.xmlに追加しました

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/rest</param-value>
</context-param>

<servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>uk.co.rest.test.Library</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

JBossにバンドルされているresteasy.deployerがその役割を果たしていないように感じますが、デバッグの方法がわかりません。

どんな助けでも、これの上に私の髪を引っ張るのは素晴らしいでしょう!

4

2 に答える 2

1

サービスとして公開するには、RESTEasy を構成する必要があります。直接または Seam のリソースサーブレットを介して実行できます。

RESTEasy を直接使用する最も簡単な方法は、RESTEasy をサーブレット フィルターとして構成することです。http://docs.jboss.org/resteasy/docs/2.3.0.GA/userguide/html/Installation_Configuration.html#filterweb.xmlに記載されているように、フィルターを追加する以外に行うことはほとんどありません。

ただし、Seam を使用する場合、Seam はそのリソースサーブレットを介して RESTEasy サービスを非常に簡単にデプロイできるため、これは不要です ( http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/htmlに文書化されています)。 /webservices.html#d0e22093 )。まず、RESTEasy のアプリケーション コンポーネントを次のように宣言します。

<resteasy:application resource-path-prefix="/rest" />

そして、構成されたパスに自動的にデプロイされるプロバイダーを作成します。次に例を示します。

@Name("libraryService")
@Path("/library")
public class Library implements Serializable {

    @In(create=true) private transient BookHome bookHome;

    @GET @Path("/{book}")
    @Produces("text/plain")
    public String getBooks(@PathParam("book") String id) {
        bookHome.setId(id);
        return bookHome.getInstance().getTitle();
    }
}

その後、次の方法で RESTEasy サービスにアクセスできます。

http://localhost:8080/yourapp/seam/resource/rest/library/1

Seam を採用する利点は、主に使いやすさです。追加の jar を含める必要があります: jboss-seam-resteasy.jar.

于 2012-09-12T23:07:16.617 に答える
0

あなたはの役割を誤解しているようですjavax.ws.rs.Application。-メソッドを公開するためにクラスを拡張する必要はありませLibraryん。javax.ws.rs.ApplicationgetBooks()

を拡張するクラスを作成しますjavax.ws.rs.Application。-methodsをオーバーライドし、getSingletons()公開したいメソッドを持つインスタンスのセットを返します。

public class MyApplication extends javax.ws.rs.Application {
    @Override public Set<Object> getSingletons(){
        return Collections.<Object>singleton(new Library());
    }
}

で、クラスを指すようにinit-paramを web.xml変更します。javax.ws.rs.ApplicationMyApplication

于 2012-08-19T17:19:44.523 に答える