2012-07-18 23 views
16

私はJerseyを使用する非常に単純なエンドポイントを持っています。私のURLは静的なので、リクエストパラメータは必要ありません。ジャージーはHTTPステータス405を返します - メソッドが許可されていません

​​

ただし、このURLをリクエストするときは、常にHTTPステータスコード405 - Method Not Allowedが表示されます。

@Pathアノテーションを変更してパス変数を定義すると、奇妙なことです。 @Path("/chart/{blah}")正常に動作します。

これを動作させるためにパス変数を定義しなければならない理由は誰も知りませんか?私はパス変数は必要ありませんし、ちょうど200の応答を得るために1つを追加するのは愚かなようです。

+1

にどのようにURLを要求していると、パスに「/休息」を追加しますか?例えば - 使用しようとしている実際のURLを投稿します。 –

+0

私が使用しているURLは次のとおりです:http:// localhost:8080/mydata – seedhead

答えて

10

おかげで問題に私の他の方法を提供します。それは私のジャージーSpringServletのための間違ったURLパターンを私が愚かに入力することになりました。それは私が同じ問題に悩まされた代わりに、/*

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
</servlet> 

<url-pattern>/*</url-pattern> 

<servlet-mapping> 
    <servlet-name>Chart Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
3

私はたぶん、あなたは

curl -i -X GET -H 'Accept:application/json' http://localhost:8080/mydata 

2ターミナルで以下を実行してみてください)または

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_HTML}) 
+1

残念なことに、残念ながら、両方とも405が返されます。 – seedhead

+0

@seedhead申し訳ありませんが、方法1をやり直すことはできますか?間違ったヘッダーをコピーして貼り付けた – tanyehzheng

4

への変更を試してみてください)あなたは

@Produces(MediaType.APPLICATION_JSON). 

1を指定したので、それはおそらくだと思いますメソッドの代わりにクラスに注釈を付けます。

@Path("/mydata") 
public class MyClass(){ 

@GET 
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) 
public String getData() { 
    return "{'name': 'value'}"; 
} 

} 

私はなぜ知らないが、それはまた、提案のため

関連する問題