0

すべて拡張するバリアント リソースがありますBaseResource<T>

@Component
@Path("/businesses")
public class BusinessResource extends BaseResource<Business>{

   @GET
   @Path({businessId}/)
   public Business getBusiness(@PathParam("businessId") Integer businessId){..}
}

@Component
@Path("/clients")
public class ClientResource extends BaseResource<Client>{

   @GET
   @Path({clientId}/)
   public Client getClient(@PathParam("clientId") Integer clientId){..}
}

への呼び出しがある場合、 /businesses/3最初にオブジェクトを検証するメソッドを作成しT、すべてが問題なければジャージーにリソースの処理を続行するように指示します。クライアントにも同じことが言えます。

通常のサーブレット/フィルターは使用できません。これは BEFORE jersey サーブレットが呼び出されており、どのリソースが呼び出されているのかわからないためです。

ジャージーでそれを行う最良の方法は何ですか?

jersey が呼び出すメソッドを知ることと呼び出しの間に干渉する場所はありますか?

4

2 に答える 2

0

NameBinding で jersey 2.x ContainerRequestFilters を使用できます。リソースと一致した後、メソッド自体を実行する前に、バインドされたフィルターが実行されます。それが可能であると述べているジャージーのユーザー ガイドを見ることができます。 第 9.2.1.1 章では PreMatching および PostMatching フィルターについて説明し、第 9.4章ではジャージー フィルターの実行順序を示します。

jersey 2 でフィルターを機能させるのに問題があった実装については、私の投稿を参照してください。

于 2014-06-06T20:29:53.717 に答える