Sergey, Great thanks! Your proposed solution works for both cases, Jersey and CXF. There is still work to do for odata4j to be CXF enabled. I will notify this mailing list when we are done.
Regards, Stephan -----Original Message----- From: Sergey Beryozkin <[email protected]> Reply-To: "[email protected]" <[email protected]> Date: Wed, 8 Feb 2012 12:45:26 +0100 To: "[email protected]" <[email protected]> Subject: Re: JAXRS: RegEx Jersey vs. CXF (2.5.2) >Hi > >On 08/02/12 08:59, Klevenz, Stephan wrote: >> Hi, >> >> I could encircle the problem. If having this additional resource class >> present then the expected getNavProperty handler is not called. >> >> @Path("{entitySetName}{optionalParens: (\\(\\))?}") >> public class EntitiesRequestResource { >> >> @GET >> @Produces({ ODataConstants.APPLICATION_ATOM_XML_CHARSET_UTF8, >> ODataConstants.TEXT_JAVASCRIPT_CHARSET_UTF8, >> ODataConstants.APPLICATION_JAVASCRIPT_CHARSET_UTF8 }) >> public Response getEntities() { >> ... >> } >> } >> >> Expected handler mapping: >> >> http://localhost:8810/test/test.svc/categories(1)/products -> >> getNavProperty >> http://localhost:8810/test/test.svc/categories() -> >> getEntities >> http://localhost:8810/test/test.svc/categories -> >> getEntities >> >> Here it seems that the CXF differs from Jersey in its implemented >>mapping >> strategy. Is there any option to get the behavior changed? > >As far as the mapping strategy is concerned, CXF does select the best >matching root resource, but what happens in this specific case is that >both root resources are happen to be equal candidates. > >The above @Path value gets translated to the following in CXF: >/([^/]+?)(((\(\))?))(/.*)? > >where the '(/.*)?' bit is appended to the translated @Path expression. >As a result, >http://localhost:8810/test/test.svc/categories(1)/products >is actually matched by the above expression. > >The other class is also matched, and their path values both have the >same number of literal characters (none), default (1) & non-default >(1) capturing groups. > >I'm wondering, how does Jersey decide that EntitiesRequestResource is >not a candidate. is there a possibility there that it basically always >starts from EntityRequestResource ? Its path will match >'categories(1)/products' but neither 'categories()' nor >'categories'... > >Note that CXF has a ResourceComparator extension that can be customize >the selection between multiple candidates. But that is an extension... >Personally, I'd consider keeping EntityRequestResource's Path as is >but would simplify EntitiesRequestResource with having only >Path("{entitySetName}") and 2 GET methods, one without @Path and >another with @Path"()" - less compact but stays away from explicit >regular expressions :-). > >However, I'm really curious now why Jersey works in this case. Can you >please check on it on your side ? > >Thanks, Sergey > >> >> Regards, >> Stephan >> >> >> >> >> >> >> -----Original Message----- >> From: Sergey Beryozkin<[email protected]> >> Reply-To: "[email protected]"<[email protected]> >> Date: Tue, 7 Feb 2012 23:38:40 +0100 >> To: "[email protected]"<[email protected]> >> Subject: Re: JAXRS: RegEx Jersey vs. CXF (2.5.2) >> >>> Hi >>> On 07/02/12 16:45, Klevenz, Stephan wrote: >>>> Hi, >>>> >>>> I have another issue within compatibility between Jersey and CXF and >>>> maybe >>>> you can give me a hint. The issue is with the following URL pattern >>>> where >>>> CXF doesn't dispatch to the expected handler: >>>> >>>> http://localhost:8810/test/test.svc/categories(1)/products >>>> >>>> The relevant code snippet is a resource class and a sub resource >>>>class: >>>> >>>> @Path("{entitySetName}{id: \\(.+?\\)}") >>>> public class EntityRequestResource { >>>> >>>> @Path("{navProp: .+}") >>>> public PropertyRequestResource getNavProperty() { >>>> return new PropertyRequestResource(); >>>> } >>>> } >>>> >>>> >>>> public class PropertyRequestResource { >>>> @GET >>>> @Produces({ >>>> ODataConstants.APPLICATION_ATOM_XML_CHARSET_UTF8, >>>> ODataConstants.TEXT_JAVASCRIPT_CHARSET_UTF8, >>>> ODataConstants.APPLICATION_JAVASCRIPT_CHARSET_UTF8 }) >>>> public Response getNavProperty() {...} >>>> } >>>> >>> >>> This works in my local test, will try your example a bit later >>> >>> Sergey >>> >>>> The complete WADL file is checked into a source repository and is >>>> accessible at [1]. [2] is the corresponding Jersey generated WADL file >>>> of >>>> the same code. With Jersey it doesn't fail. [3] is an example maven >>>> project with has a failing JUnit test isolating the problem. [4] is >>>>the >>>> fine trace of CXF that doesn't find a matching method. >>>> >>>> Any hint how to get this fixed is welcome. Thanks in advance. >>>> >>>> Regards, >>>> Stephan >>>> >>>> >>>> [1] >>>> >>>> >>>>https://bitbucket.org/sklevenz/example/src/ecc3183d5976/org.example.cor >>>>e/ >>>> sr >>>> c/test/resources/wadl.cxf.xml >>>> [2] >>>> >>>> >>>>https://bitbucket.org/sklevenz/example/src/ecc3183d5976/org.example.cor >>>>e/ >>>> sr >>>> c/test/resources/wadl.jersey.xml >>>> [3] https://bitbucket.org/sklevenz/example >>>> [4] CXF Trace: >>>> 2012-02-07 17:38:09,744 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: >>>> ****************************************************************** >>>> 2012-02-07 17:38:09,745 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: Activated >>>> Server >>>> Type = CXF >>>> 2012-02-07 17:38:09,745 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: >>>> ****************************************************************** >>>> 2012-02-07 17:38:09,746 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: >>>> --------------------------------------------------------------- >>>> 2012-02-07 17:38:09,746 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: test class: >>>> org.example.test.compatibility.OData4JCompatibilityTest >>>> 2012-02-07 17:38:09,746 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: test method: >>>> testNavigationProperty >>>> 2012-02-07 17:38:09,746 INFO [main] >>>> org.example.test.compatibility.OData4JCompatibilityTest: >>>> --------------------------------------------------------------- >>>> 2012-02-07 17:38:09,909 DEBUG [main] >>>> org.apache.cxf.common.logging.LogUtils: Using >>>> org.apache.cxf.common.logging.Slf4jLogger for logging. >>>> 2012-02-07 17:38:09,927 DEBUG [main] org.eclipse.jetty.util.log: >>>>Logging >>>> to org.slf4j.impl.Log4jLoggerAdapter(org.eclipse.jetty.util.log) via >>>> org.eclipse.jetty.util.log.Slf4jLog >>>> 2012-02-07 17:38:09,959 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: filterNameMap={} >>>> 2012-02-07 17:38:09,959 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: pathFilters=null >>>> 2012-02-07 17:38:09,959 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: servletFilterMap=null >>>> 2012-02-07 17:38:09,959 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: >>>> >>>> >>>>servletPathMap={/test/test.svc/*=org.apache.cxf.jaxrs.servlet.CXFNonSpr >>>>in >>>> gJ >>>> axrsServlet-255194190} >>>> 2012-02-07 17:38:09,959 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: >>>> >>>> >>>>servletNameMap={org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-2 >>>>55 >>>> 19 >>>> 4190=org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190} >>>> 2012-02-07 17:38:09,974 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.Server@6364cbde + >>>> [email protected]:8810 STOPPED as connector >>>> 2012-02-07 17:38:09,979 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.handler.HandlerCollection@767a9224#STOPPED + >>>> o.e.j.s.ServletContextHandler{/,null} as handler >>>> 2012-02-07 17:38:09,979 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.Server@6364cbde + >>>> org.eclipse.jetty.server.handler.HandlerCollection@767a9224#STOPPED as >>>> handler >>>> 2012-02-07 17:38:09,979 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.server.Server@6364cbde >>>> 2012-02-07 17:38:09,979 INFO [main] org.eclipse.jetty.server.Server: >>>> jetty-7.5.4.v20111024 >>>> 2012-02-07 17:38:09,996 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.Server@6364cbde + >>>> qtp881373670{8<=0<=0/254,-1}#STOPPED as threadpool >>>> 2012-02-07 17:38:09,996 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.server.handler.HandlerCollection@767a9224#STOPPED >>>> 2012-02-07 17:38:09,996 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,017 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STOPPED + >>>> org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190 as >>>> servlet >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STOPPED + >>>> >>>> >>>>[/test/test.svc/*]=>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServl >>>>et >>>> -2 >>>> 55194190 as servletMapping >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STOPPED + >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STOPPED as handler >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STOPPED + >>>> org.eclipse.jetty.server.session.HashSessionManager@62ac06d4#STOPPED >>>>as >>>> sessionManager >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> o.e.j.s.ServletContextHandler{/,null} + >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STOPPED as >>>> handler >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STOPPED >>>> 2012-02-07 17:38:10,018 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.server.session.HashSessionManager@62ac06d4#STOPPED >>>> 2012-02-07 17:38:10,019 DEBUG [main] >>>> org.eclipse.jetty.util.component.Container: Container >>>> org.eclipse.jetty.server.Server@6364cbde + >>>> org.eclipse.jetty.server.session.HashSessionIdManager@2c8c7d6#STOPPED >>>>as >>>> sessionIdManager >>>> 2012-02-07 17:38:10,020 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.server.session.HashSessionIdManager@2c8c7d6#STOPPED >>>> 2012-02-07 17:38:10,020 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.server.session.HashSessionIdManager@2c8c7d6#STARTED >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.server.session.HashSessionManager@62ac06d4#STARTED >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STOPPED >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: filterNameMap={} >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: pathFilters=null >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: servletFilterMap=null >>>> 2012-02-07 17:38:10,021 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: >>>> >>>> >>>>servletPathMap={/test/test.svc/*=org.apache.cxf.jaxrs.servlet.CXFNonSpr >>>>in >>>> gJ >>>> axrsServlet-255194190} >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.servlet.ServletHandler: >>>> >>>> >>>>servletNameMap={org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-2 >>>>55 >>>> 19 >>>> 4190=org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190} >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.server.handler.AbstractHandler: starting >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STARTING >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.servlet.ServletHandler@5c5ddd3#STARTED >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.server.handler.AbstractHandler: starting >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STARTING >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.server.session.SessionHandler@1664a9b#STARTED >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.server.handler.AbstractHandler: starting >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,022 INFO [main] >>>> org.eclipse.jetty.server.handler.ContextHandler: started >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,022 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190 >>>> 2012-02-07 17:38:10,345 INFO [main] >>>>org.apache.cxf.endpoint.ServerImpl: >>>> Setting the server's publish address to be / >>>> 2012-02-07 17:38:10,399 DEBUG [main] >>>>org.apache.cxf.endpoint.ServerImpl: >>>> Server is starting. >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.apache.cxf.transport.servlet.ServletDestination: registering >>>> incoming >>>> observer: org.apache.cxf.transport.ChainInitiationObserver@2224ea85 >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>>org.apache.cxf.endpoint.ServerImpl: >>>> register the server to serverRegistry >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190 >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.server.handler.AbstractHandler: starting >>>> org.eclipse.jetty.server.handler.HandlerCollection@767a9224#STARTING >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.server.handler.HandlerCollection@767a9224#STARTED >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.server.handler.AbstractHandler: starting >>>> org.eclipse.jetty.server.Server@6364cbde >>>> 2012-02-07 17:38:10,400 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> qtp881373670{8<=0<=0/254,-1}#STOPPED >>>> 2012-02-07 17:38:10,404 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> qtp881373670{8<=7<=8/254,0}#STARTED >>>> 2012-02-07 17:38:10,405 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> [email protected]:8810 STOPPED >>>> 2012-02-07 17:38:10,419 INFO [main] >>>> org.eclipse.jetty.server.AbstractConnector: Started >>>> [email protected]:8810 STARTING >>>> 2012-02-07 17:38:10,419 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: starting >>>> >>>> >>>>org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorMa >>>>na >>>> ge >>>> r@1633c3e6#STOPPED >>>> 2012-02-07 17:38:10,429 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> >>>> >>>>org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorMa >>>>na >>>> ge >>>> r@1633c3e6#STARTED >>>> 2012-02-07 17:38:10,429 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> [email protected]:8810 STARTED >>>> 2012-02-07 17:38:10,429 DEBUG [main] >>>> org.eclipse.jetty.util.component.AbstractLifeCycle: STARTED >>>> org.eclipse.jetty.server.Server@6364cbde >>>> 2012-02-07 17:38:10,429 DEBUG [qtp881373670-22 Selector0] >>>> org.eclipse.jetty.io.nio: Starting Thread[qtp881373670-22 >>>> Selector0,5,main] on >>>>org.eclipse.jetty.io.nio.SelectorManager$1@52287b58 >>>> 2012-02-07 17:38:10,429 DEBUG [main] >>>> org.example.test.compatibility.cxf.CxfTestClient: **** >>>> >>>> >>>>CxfTestClient.getResource(http://localhost:8810/test/test.svc/categorie >>>>s( >>>> 1) >>>> /products) >>>> 2012-02-07 17:38:10,656 DEBUG [main] >>>> org.apache.http.impl.conn.SingleClientConnManager: Get connection for >>>> route HttpRoute[{}->http://localhost:8810] >>>> 2012-02-07 17:38:10,660 DEBUG [main] >>>> org.apache.http.impl.conn.DefaultClientConnectionOperator: Connecting >>>>to >>>> localhost:8810 >>>> 2012-02-07 17:38:10,691 DEBUG [main] >>>> org.apache.http.client.protocol.RequestAddCookies: CookieSpec >>>>selected: >>>> best-match >>>> 2012-02-07 17:38:10,707 DEBUG [main] >>>> org.apache.http.client.protocol.RequestAuthCache: Auth cache not set >>>>in >>>> the context >>>> 2012-02-07 17:38:10,707 DEBUG [main] >>>> org.apache.http.impl.client.DefaultHttpClient: Attempt 1 to execute >>>> request >>>> 2012-02-07 17:38:10,707 DEBUG [main] >>>> org.apache.http.impl.conn.DefaultClientConnection: Sending request: >>>>GET >>>> /test/test.svc/categories(1)/products HTTP/1.1 >>>> 2012-02-07 17:38:10,707 DEBUG [main] org.apache.http.wire:>> "GET >>>> /test/test.svc/categories(1)/products HTTP/1.1[\r][\n]" >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.wire:>> "Host: >>>> localhost:8810[\r][\n]" >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.wire:>> >>>> "Connection: >>>> Keep-Alive[\r][\n]" >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.wire:>> >>>> "User-Agent: >>>> Apache-HttpClient/4.1.2 (java 1.5)[\r][\n]" >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.wire:>> >>>>"[\r][\n]" >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.headers:>> GET >>>> /test/test.svc/categories(1)/products HTTP/1.1 >>>> 2012-02-07 17:38:10,708 DEBUG [main] org.apache.http.headers:>> >>>>Host: >>>> localhost:8810 >>>> 2012-02-07 17:38:10,709 DEBUG [main] org.apache.http.headers:>> >>>> Connection: Keep-Alive >>>> 2012-02-07 17:38:10,709 DEBUG [main] org.apache.http.headers:>> >>>> User-Agent: Apache-HttpClient/4.1.2 (java 1.5) >>>> 2012-02-07 17:38:10,727 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>>org.eclipse.jetty.server.Server: >>>> REQUEST /test/test.svc/categories(1)/products on >>>> >>>> >>>>org.eclipse.jetty.server.nio.SelectChannelConnector$SelectChannelHttpCo >>>>nn >>>> ec >>>> tion@[email protected]:8810<->127.0.0.1:51920 >>>> 2012-02-07 17:38:10,727 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.eclipse.jetty.server.handler.ContextHandler: scope >>>> null||/test/test.svc/categories(1)/products @ >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,727 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.eclipse.jetty.server.handler.ContextHandler: >>>> context=||/test/test.svc/categories(1)/products @ >>>> o.e.j.s.ServletContextHandler{/,null} >>>> 2012-02-07 17:38:10,729 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>>org.eclipse.jetty.server.session: >>>> >>>> >>>>sessionManager=org.eclipse.jetty.server.session.HashSessionManager@62ac >>>>06 >>>> d4 >>>> #STARTED >>>> 2012-02-07 17:38:10,729 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>>org.eclipse.jetty.server.session: >>>> session=null >>>> 2012-02-07 17:38:10,730 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.eclipse.jetty.servlet.ServletHandler: servlet >>>> |/test/test.svc|/categories(1)/products -> >>>> org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet-255194190 >>>> 2012-02-07 17:38:10,730 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.eclipse.jetty.servlet.ServletHandler: chain= >>>> 2012-02-07 17:38:10,734 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.transport.servlet.ServletController: Service http >>>>request >>>> on thread: Thread[qtp881373670-23 - >>>> /test/test.svc/categories(1)/products,5,main] >>>> 2012-02-07 17:38:10,734 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.transport.http.AbstractHTTPDestination: Create a new >>>> message for processing >>>> 2012-02-07 17:38:10,739 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.transport.http.Headers: Request Headers: >>>> {connection=[keep-alive], Content-Type=[null], Host=[localhost:8810], >>>> User-Agent=[Apache-HttpClient/4.1.2 (java 1.5)]} >>>> 2012-02-07 17:38:10,754 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Adding interceptor >>>> org.apache.cxf.interceptor.ServiceInvokerInterceptor@6cb101cf to phase >>>> invoke >>>> 2012-02-07 17:38:10,754 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Adding interceptor >>>> org.apache.cxf.interceptor.OutgoingChainInterceptor@6e61a414 to phase >>>> post-invoke >>>> 2012-02-07 17:38:10,754 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Adding interceptor >>>> org.apache.cxf.interceptor.OneWayProcessorInterceptor@4c5b55a9 to >>>>phase >>>> pre-logical >>>> 2012-02-07 17:38:10,754 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Adding interceptor >>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor@54f169 to phase >>>> unmarshal >>>> 2012-02-07 17:38:10,755 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Adding interceptor >>>> org.apache.cxf.transport.https.CertConstraintsInterceptor@4c825cf3 to >>>> phase pre-stream >>>> 2012-02-07 17:38:10,755 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Chain >>>> org.apache.cxf.phase.PhaseInterceptorChain@3c789d63 was created. >>>>Current >>>> flow: >>>> pre-stream [CertConstraintsInterceptor] >>>> unmarshal [JAXRSInInterceptor] >>>> pre-logical [OneWayProcessorInterceptor] >>>> invoke [ServiceInvokerInterceptor] >>>> post-invoke [OutgoingChainInterceptor] >>>> >>>> 2012-02-07 17:38:10,755 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Invoking handleMessage on >>>> interceptor >>>> org.apache.cxf.transport.https.CertConstraintsInterceptor@4c825cf3 >>>> 2012-02-07 17:38:10,756 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.phase.PhaseInterceptorChain: Invoking handleMessage on >>>> interceptor org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor@54f169 >>>> 2012-02-07 17:38:10,762 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Trying to select a resource >>>> class, >>>> request path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e may get selected, request path : >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e, resource class @Path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntityRequestResou >>>>rc >>>> e >>>> may get selected, request path : >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntityRequestResou >>>>rc >>>> e, >>>> resource class @Path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityLinksRequestResour >>>>ce >>>> may get selected, request path : >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityLinksRequestResour >>>>ce >>>> , >>>> resource class @Path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityPropertyRequestRes >>>>ou >>>> rc >>>> e may get selected, request path : >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityPropertyRequestRes >>>>ou >>>> rc >>>> e, resource class @Path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No resource class match for >>>> org.example.test.compatibility.resource.SimpleCompatibilityResource, >>>> request path : /categories(1)/products >>>> 2012-02-07 17:38:10,763 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e has been selected, request path : >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e, resource class @Path : /categories(1)/products >>>> 2012-02-07 17:38:10,764 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Trying to select a resource >>>> operation on the resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e >>>> 2012-02-07 17:38:10,765 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No method match, method name : >>>> getEntities, request path : /products, method @Path : /, HTTP Method : >>>> GET, method HTTP Method : GET, ContentType : */*, method @Consumes : >>>> */*,, >>>> Accept : */*,, method @Produces : >>>> >>>> >>>>application/atom+xml;charset=utf-8,text/javascript;charset=utf-8,applic >>>>at >>>> io >>>> n/json;charset=utf-8,. >>>> 2012-02-07 17:38:10,765 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No method match, method name : >>>> getEntitiesCount, request path : /products, method @Path : /{count: >>>> [$]count}, HTTP Method : GET, method HTTP Method : GET, ContentType : >>>> */*, >>>> method @Consumes : */*,, Accept : */*,, method @Produces : >>>> >>>> >>>>application/atom+xml;charset=utf-8,text/javascript;charset=utf-8,applic >>>>at >>>> io >>>> n/json;charset=utf-8,. >>>> 2012-02-07 17:38:10,767 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: Trying to select a resource >>>> operation on the resource class >>>> >>>> >>>>org.example.test.compatibility.resource.CompatibilityEntitiesRequestRes >>>>ou >>>> rc >>>> e >>>> 2012-02-07 17:38:10,767 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No method match, method name : >>>> getEntities, request path : /products, method @Path : /, HTTP Method : >>>> GET, method HTTP Method : GET, ContentType : */*, method @Consumes : >>>> */*,, >>>> Accept : */*,, method @Produces : >>>> >>>> >>>>application/atom+xml;charset=utf-8,text/javascript;charset=utf-8,applic >>>>at >>>> io >>>> n/json;charset=utf-8,. >>>> 2012-02-07 17:38:10,767 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No method match, method name : >>>> getEntitiesCount, request path : /products, method @Path : /{count: >>>> [$]count}, HTTP Method : GET, method HTTP Method : GET, ContentType : >>>> */*, >>>> method @Consumes : */*,, Accept : */*,, method @Produces : >>>> >>>> >>>>application/atom+xml;charset=utf-8,text/javascript;charset=utf-8,applic >>>>at >>>> io >>>> n/json;charset=utf-8,. >>>> 2012-02-07 17:38:10,768 WARN [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.utils.JAXRSUtils: No operation matching request >>>> path >>>> "/test/test.svc/categories(1)/products" is found, Relative Path: >>>> /products, HTTP Method: GET, ContentType: */*, Accept: */*,. Please >>>> enable >>>> FINE/TRACE log level for more details. >>>> 2012-02-07 17:38:10,770 WARN [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper: >>>> WebApplicationException has been caught : no cause is available >>>> 2012-02-07 17:38:10,771 DEBUG [qtp881373670-23 - >>>> /test/test.svc/categories(1)/products] >>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper: no cause is >>>> available >>>> javax.ws.rs.WebApplicationException >>>> at >>>> >>>> >>>>org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java: >>>>41 >>>> 5) >>>> at >>>> >>>> >>>>org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXR >>>>SI >>>> nI >>>> nterceptor.java:212) >>>> at >>>> >>>> >>>>org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRS >>>>In >>>> In >>>> terceptor.java:89) >>>> at >>>> >>>> >>>>org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptor >>>>Ch >>>> ai >>>> n.java:263) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiat >>>>io >>>> nO >>>> bserver.java:123) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHT >>>>TP >>>> De >>>> stination.java:207) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.ServletController.invokeDestination(Se >>>>rv >>>> le >>>> tController.java:213) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.ServletController.invoke(ServletContro >>>>ll >>>> er >>>> .java:154) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSprin >>>>gS >>>> er >>>> vlet.java:126) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Abst >>>>ra >>>> ct >>>> HTTPServlet.java:185) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTP >>>>Se >>>> rv >>>> let.java:113) >>>> at >>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:693) >>>> at >>>> >>>> >>>>org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHT >>>>TP >>>> Se >>>> rvlet.java:164) >>>> at >>>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) >>>> at >>>> >>>> >>>>org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:4 >>>>80 >>>> ) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler >>>>.j >>>> av >>>> a:225) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler >>>>.j >>>> av >>>> a:941) >>>> at >>>> >>>> >>>>org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:40 >>>>9) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler. >>>>ja >>>> va >>>> :186) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler. >>>>ja >>>> va >>>> :875) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.jav >>>>a: >>>> 11 >>>> 7) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollec >>>>ti >>>> on >>>> .java:149) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.j >>>>av >>>> a: >>>> 110) >>>> at org.eclipse.jetty.server.Server.handle(Server.java:345) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.ja >>>>va >>>> :4 >>>> 41) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(H >>>>tt >>>> pC >>>> onnection.java:919) >>>> at >>>> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582) >>>> at >>>> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218) >>>> at >>>> >>>> >>>>org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection >>>>.j >>>> av >>>> a:51) >>>> at >>>> >>>> >>>>org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndP >>>>oi >>>> nt >>>> .java:586) >>>> at >>>> >>>> >>>>org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPo >>>>in >>>> t. >>>> java:44) >>>> at >>>> >>>> >>>>org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool. >>>>ja >>>> va >>>> :598) >>>> at >>>> >>>> >>>>org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.j >>>>av >>>> a: >>>> 533) >>>> at java.lang.Thread.run(Thread.java:680) >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Sergey Beryozkin >>> >>> Talend Community Coders >>> http://coders.talend.com/ >>> >>> Blog: http://sberyozkin.blogspot.com >> > > >-- >Sergey Beryozkin > >Talend Community Coders >http://coders.talend.com/ > >Blog: http://sberyozkin.blogspot.com
