You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Dmitry Kozlov (JIRA)" <ji...@apache.org> on 2015/03/30 00:00:53 UTC
[jira] [Created] (CXF-6321) Make sure global JAX-RS filters are
applied once per request even if made to sub-resource
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)