RESTeasy のドキュメントで提案されている内容に従って、一部の API 呼び出しにのみ関連付けられている事前一致フィルターを指定しようとしています。私のコードは次のようになります。
名前バインディング:
@NameBinding
public @interface ValidateFoo {}
リソース:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
フィルター:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
問題は: FooValidation フィルターは、アノテーションが付けられたものだけでなく、すべてのメソッド呼び出しの前 (例: /foo/bar への GET および POST の前)に実行されます (@ValidateFoo
私にはバグのようです)。フィルターから注釈を削除する@Provider
と、(予想どおり) 呼び出しの前に実行されません。
この動作は、WebLogic または Tomcat を使用して一貫して見られます。私の依存関係管理は Maven を介して行われ、RESTeasy のバージョンは 3.0-beta-3 です。
同じ行動を経験した/経験した人はいますか? JBoss フォーラムで同様の問題を抱えている別のユーザーを見たことがありますが、これまでのところうまくいきません。
更新: RESTeasy 3.0.1-Final で同じ問題がまだ発生しています。