受信リソースのIDがIdValidationでアノテーションされている場合、着信リクエストのIDを検証するフィルタがあります。 thisチュートリアルの説明に従って、このフィルタをweb xmlに追加しようとしました。ただし、IdValidationアノテーションを使用してメソッドをテストするときはフィルタは呼び出されません。Web経由のジャージフィルター登録が動作していません
@Provider
@IdValidation
public class IdValidationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
this.requestContext = requestContext;
MultivaluedMap<String, String> map = requestContext.getUriInfo().getPathParameters();
if (map.containsKey("someId")) {
// Do some validation and abort if nessecary
}
}
}
私はこのフィルタを追加するために使用するインターフェイスです。
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
public @interface IdValidation {}
ウェブXML。フィルタは同じパッケージに入っているので、これは必要ではないと思うので、最初はプロバイダのクラス名なしで試しましたが、これはどちらもうまくいきませんでした。
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>my.package</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>my.package.IdValidationFilter</param-value>
</init-param>
</servlet>