2017-03-22 17 views
0

この最小限のRESTサンプルを作成するには何が必要ですか?パス注釈を使用した単純なRESTサービス - 404エラー

プロジェット名前:こんにちは、残り

アプリケーションコード:

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("resources") 
public class MyJAXWSApp extends Application { 
} 

MessageResource:

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

    @Path("message") 
    public class MessageResource { 
    @GET 
    public String Hello() { 
     return "hello!"; 
    } 
} 

MAVEN設定:

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
    <scope>provided</scope> 
</dependency> 

問題:
これまでのところ、Eclipseのネオンを介した展開がWildFlyに404エラーで10倍の結果は、私が呼んサービスURI:

http://localhost:8080/hello-rest/resources/message 

出典:Adam Bien

PS:サーバデプロイメントOK:

22:20:04,486 INFO [org.wildfly.extension.undertow](MSCサービススレッド1-2)WFLYUT0006:HTTPリスナーのデフォルトリッスン127 .0.0.1:8080 ...

22:20:04,582 INFO [org.jboss.as.server.deployment](MSCサービススレッド1-5)WFLYSRV0027: "hello-rest-0.0 .1-SNAPSHOT.war "(ランタイム名:" hello-rest-0.0.1-SNAPSHOT.war ") ...

22:20:04,974情報[org.wildfly.extension.undertow] MSCサービススレッド1-3)WFLYUT0006:リスニングアンダートウHTTPSリスナーのhttps 127.0.0.1:8443に....

22:20:06992 INFO [org.jboss.resteasy.resteasy_jaxrs.i18n](ServerServiceスレッドプール - 59)RESTEASY002225:javax.ws.rs.core.Applicationの配備:クラスJAXRSConfiguration ...

22:20:07074 INFO [org.wildfly.extension.undertow](ServerServiceのスレッドプール - 59)WFLYUT0021:登録Webコンテキスト:/hello-rest-0.0.1-SNAPSHOT

22:20:07,135 INFO [ServerServiceスレッドプール - 34] WFLYSRV0010:デプロイされた "hello-rest-0.0.1-SNAPSHOT.war"(実行時名: "hello-rest- 0.0.1-SNAPSHOT.war ")

答えて

2

サーバの出力には、「/hello-rest-0.0.1-SNAPSHOT」というパスが登録されています。だからあなたの戦争にバージョンを追加しないようにあなたのMavenの設定を変更するまでは、あなたのURLに "-0.0.1-SNAPSHOT"を追加する必要があります。
すなわちhttp://localhost:8080/hello-rest-0.0.1-SNAPSHOT/resources/message

「/」で始まるリソース(メソッドではない)上のApplicationPathとPathアノテーションも常に見てきました。それが必要かどうかはわかりませんが、私はそれをベストプラクティスとして推薦したいと思います。

更新:hereを見てください.JAX-RS 2の時点では、スラッシュとスラッシュは必要ありません。

+0

ダニエルには本当に感謝しています。追加されたMavenバージョンが原因でした。私は何時間も狂ってしまった。私は完全に後悔していた。どうもありがとうございます。 –

+0

問題ありません。それは数回ヒットするまで気付かないものの1つです。 –

0

これはあなたのMyJAXWSAppにありますか?

private void addRestResourceClasses(Set<Class<?>> resources) { 
    resources.add(your.package.name.MessageResource.class); 
} 

:パッケージが正しいことを確認してください。私はちょうどyour.package.nameを入れましたが、完全修飾クラス名を指定する必要があります。

+1

29.2.7.1に[こちら](https://docs.oracle.com/javaee/7/tutorial/jaxrs002.htm#GILIK)する必要はありません。 "デフォルトでは、アーカイブはリソースのために処理されます。 –

+0

Oracle Docによれば、これは必須ではありません。しかし、私はそれを試みましたが、顕著な効果はありませんでした。 –

+0

あなたのWebコンテキストが**/hello-rest-0.0.1-SNAPSHOT **であることがWildflyログに記録されています。 ** http:// localhost:8080/hello-rest-0.0.1-SNAPSHOT/resources/message ** –

関連する問題