2016-08-06 7 views
2

を返します。 @PathParamのルートはすべて404エラーコードを返します。誰も見てみることができますか?すべてのジャージールート私は<strong>グリズリー</strong>上で実行されている、<strong>ジャージー</strong>を使用して、いくつかの<strong>RESTfulな</strong>サービスを持っている404

ワーキング:

@GET 
@Path("/testget") 
@Produces(MediaType.APPLICATION_JSON) 
Response testGet(){ 
    //working 
} 

動作しない:

@GET 
@Path("/testpath/{id}") 
@Produces(MediaType.APPLICATION_JSON) 
Response testPath(@PathParam("id") String id){ 
    //not working, return 404 
} 

私はパスのparamを削除した場合、それが動作を開始します。しかし、パスパラムが必要です。

グリズリーコード:調査の多くの後

 ResourceConfig resourceConfig = new ResourceConfig(); 
     resourceConfig.register(TestController.class); 

     HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URL), resourceConfig, false); 
     server.start(); 
+0

url '.../testget'は動作しますが、' .../testpath/abc'のようなurlは動作しませんか? – Andreas

+0

、それは問題です。私は、ジャージ/グリズリーがtestpath/abcをtestpath/{id}にマップできないと思います。 – Shafiul

+0

再現できません。私はちょうど[ここ](http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/griz_jersey_intro/Grizzly-Jersey-Intro.html)の指示に従って新しいプロジェクトを作成し、両方のメソッドをサンプル「MyResource」クラスは、「Hello from 」を返します。どちらもうまくいった。 – Andreas

答えて

1

、私は私の解決策を発見しました。私は誰かがこれから有益かもしれないので、私はここにそれを追加しています。私はインターフェイスメソッドにPOSTとパスを追加すると、問題が発生することがわかっ

問題

。これは、メソッドパラメータに@PathParamがある場合に発生します。

問題の: インタフェース:

@POST 
@Path("/test/{id}") 
public String testPost(@PathParam("id") String id); 

クラス(ベース・リソースは、クラスレベルのパスの注釈にある):

@Override 
public String testPost(@PathParam("id") String id){ 
    return "hello" + id; 
} 

ソリューション

クラス:

@POST 
@Path("/test/{id}") 
@Override 
public String testPost(@PathParam("id") String id){ 
    return "hello" + id; 
} 

インターフェイスにPOSTとパスを追加するかどうかは関係ありません。しかし、それらを実装するメソッドに追加する必要があります。少なくともこれは私のために働いている、私はなぜインターフェイスの注釈が機能していないのか分からない。 J2EE仕様が言うように:他のJava EE仕様との整合性については

BLOCKQUOTE 、常に注釈を繰り返す代わりに、アノテーションの継承に頼ることをお勧めします。

私はクラスにアノテーションを追加しています。

+0

@PathParamを実装から削除する必要があります。そうしないと、interfaceのすべての注釈は無視されます。詳細については、この回答をhttp://stackoverflow.com/a/37623021/105668で説明します。 –

関連する問題

 関連する問題