Dmitry Kozlov created CXF-6321: ---------------------------------- Summary: Make sure global JAX-RS filters are applied once per request even if made to sub-resource Key: CXF-6321 URL: https://issues.apache.org/jira/browse/CXF-6321 Project: CXF Issue Type: Improvement Components: JAX-RS Affects Versions: 3.0.4 Reporter: Dmitry Kozlov
As of now CXF JAX-RS implementation applies global filters once per each (sub-)resource level. E.g. with resources defined as below any global filter is applied twice on a call to sub-resource: {code} @Path("/groups") public interface GroupsResource { @Path("/{id}/members") MembersResource membersOf(@PathParam("id") String id); } ----- public interface MembersResource { @GET @Path("/{memberId}") MemberInfo get(@PathParam("memberId") String id); } GET http://example.com/groups/123/members/456 {code} This may feel counter-intuitive in some cases and introduces certain overhead. E.g. if you have your auth-filter defined as global. Following our conversation in CXF-6297 could you please consider to change filter chain logic so that global filters are applied once per request disregard whether this request is made to a root resource or to a sub-resource of any level. Filter should be called with a full request context including actual URI info and path params, as it would be a last filter invocation in current implementation. E.g. in example above {{uriInfo}} should be passed as {{/groups/123/members/456}} (not {{/main/123/members}}), and path params should have both {{id}} and {{memberId}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)