1

これが可能かどうかはわかりませんが、ロギング フィルタを拡張するロギング用のジャージー フィルタを作成し、追加しました。

<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.chegg.commons.web.logging.WebRequestLogger</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.chegg.commons.web.logging.WebRequestLogger</param-value>
</init-param>

私のweb.xmlで、すべてが正常に機能します。もう一段上を目指したい。サーブレット コンテナは、web.xml のエントリなしで、ロギング クラスの上部に注釈を付けてフィルタを呼び出すことができます。@アスペクトのようなもの。@Aspect はフィルターではないため、使用したくありません。

4

1 に答える 1

0

はい、いつでも@Provider注釈を使用して注釈を付け、CustomFilterClassesこれらを手動で登録するか、ジャージーにフィルターを自動的にスキャンさせることができます。

例えば:

package com.test.poc.filters;
@Provider
public class CustomFilter implements ContainerRequestFilter{
 @Override
 public void filter(ContainerRequestContext requestContext){
  //filter logic..
 }
}

は、実行時に jersey によって自動検出されるようにしたい 1 つのフィルターです。そのため、ResourceConfig を拡張する 1 つのクラスを簡単に指定できます。

@ApplicationPath("api")
public class CustomResourceConfig extends ResourceConfig{
 public CustomResourceConfig(){
  super();
  packages("com.test.poc.filters;com.test.poc.restservices;com.test.poc.providers");
  //ragister any other classes like
  //register(JacksonFeature.class);
 }
}

@Providerこれにより、アノテーションが付けられた、または@Path指定されたパッケージ内のすべてのクラスが自動的にスキャンされます

于 2016-08-31T06:57:24.753 に答える