Return-Path: Delivered-To: apmail-cxf-issues-archive@www.apache.org Received: (qmail 1757 invoked from network); 28 Mar 2011 11:48:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 28 Mar 2011 11:48:46 -0000 Received: (qmail 44021 invoked by uid 500); 28 Mar 2011 11:48:46 -0000 Delivered-To: apmail-cxf-issues-archive@cxf.apache.org Received: (qmail 43992 invoked by uid 500); 28 Mar 2011 11:48:46 -0000 Mailing-List: contact issues-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list issues@cxf.apache.org Received: (qmail 43984 invoked by uid 99); 28 Mar 2011 11:48:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Mar 2011 11:48:46 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Mar 2011 11:48:43 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id C05EB83B60 for ; Mon, 28 Mar 2011 11:48:05 +0000 (UTC) Date: Mon, 28 Mar 2011 11:48:05 +0000 (UTC) From: "Sergey Beryozkin (JIRA)" To: issues@cxf.apache.org Message-ID: <1485697403.16433.1301312885784.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1453231856.10932.1301051105733.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (CXF-3422) 'Cannot find target method' when certain hex-encoded characters are used in @PathParam in GET requests MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/CXF-3422?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13012006#comment-13012006 ] Sergey Beryozkin commented on CXF-3422: --------------------------------------- Hi Karel, many thanks. one possible problem was that Tomcat itself was not handling some of those characters properly, and it in turn was exposing the brittleness of the workaround to do with keeping the matrix params... Either way, thanks for confirming it works with the snapshots Cheers, Sergey > 'Cannot find target method' when certain hex-encoded characters are used in @PathParam in GET requests > ------------------------------------------------------------------------------------------------------ > > Key: CXF-3422 > URL: https://issues.apache.org/jira/browse/CXF-3422 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 2.3.1, 2.3.3 > Environment: Tomcat 6 > Reporter: Karel Vlcek > Priority: Minor > Fix For: 2.4, 2.3.4 > > > I have following simple JAX-RS service: > {code} > public interface RootService { > @Path("data1") > public DataService getDataService(); > } > public interface DataService { > @GET > @Path("data2/{id}") > public Data getData(@PathParam("id") String id); > } > {code} > All works correctly as long as URL contains in position of @PathParam("id") ASCII characters and digits or hex-encoded spaces. These URLs work: > GET /root/data1/data2/1 > GET /root/data1/data2/AAA2BBB > GET /root/data1/data2/1%202 > However, when URL on position of the parameter {id} contains certain hex-encoded characters other than space (%20), like in this URL (this example contains digit '1' followed by 'latin capital letter d with caron'): > GET /root/data1/data2/1%C4%8E > I'll get following exception: > {noformat} > javax.ws.rs.WebApplicationException > at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:399) > at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:204) > at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88) > at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) > at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) > at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) > at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) > at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149) > at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) > at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) > at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Thread.java:662) > {noformat} > {code} > ////////////////////////////// > // Simple implementations - just to complete the example... > public class RootServiceImpl implements RootService { > @Override > public DataService getDataService() { > return new DataServiceImpl(); > } > } > public class DataServiceImpl implements DataService { > @Override > public Data getData(final String id) { > // ... > } > } > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira