3

私はこのようなものを手に入れます

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

public class xxx
{

  @GET
  @Path(value = "path1")
  public Response m1(@QueryParam(value = "a") String a)
  {
    ...
  }



  @GET
  @Path(value = "path2")
  public Response m2(@QueryParam(value = "b") String b)
  {
    ...
  }

}

restEasyを使用すると、HTTPステータス404が取得されます-path1またはpath2を取得しようとすると、毎回相対のリソースが見つかりませんでした。例:http:// someip:8080 / myserv / services / path1?a = asd

ここでhttp://docs.jboss.org/resteasy/docs/1.2.GA/userguide/html_single/#Using_Path私が読んだ

@ javax.ws.rs.Pathアノテーションは、クラスおよび/またはリソースメソッドのいずれかに存在する必要があります。クラスとメソッドの両方に存在する場合、リソースメソッドへの相対パスはクラスとメソッドの連結です。

4

2 に答える 2

1

servicesサーブレットのマッピングまたはパスの一部でない場合は削除します。

(また、パス/サーブレットマッピングに関する詳細情報により、理解が深まります)

編集:

したがって、プロジェクトはmyappコンテキスト名でデプロイされます+サービスプレフィックス+リソースクラスで定義されたパスがあります。+サーブレットマッピングは/ *なので、/ myapp / services/pathが機能するはずです。

Resteasyクラスのログレベルを上げて、何が問題なのかを確認できます。またはデバッグモードでは、PathHelper.replaceEnclosedCurlyBracesで要求されているパスを確認できます。

EDIT2:

自動スキャンの場合、クラスには@Providerの注釈を付ける必要があります

Resteasy v1.2.1

@Provider
@Path("/")
public class xxx
{

  @GET
  @Path(value = "path1")
  public Response m1(@QueryParam(value = "a") String a)
  {
    ...
  }



  @GET
  @Path(value = "path2")
  public Response m2(@QueryParam(value = "b") String b)
  {
    ...
  }

}
于 2011-01-28T11:31:57.883 に答える
0

パス表記のvalue=を削除してみましたか?私はJAX-RSにまったく慣れていないので、value =が何に使用されるかについて、100%理解しているわけではありませんが、次のことを試してみてください。

@GET  
@Path("path1")  
public Response m1(@QueryParam(value = "a") String a)  
{  
  ...  
}  
于 2011-01-28T13:33:57.833 に答える