[
https://issues.apache.org/jira/browse/CXF-4446?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13426574#comment-13426574
]
Sergey Beryozkin commented on CXF-4446:
---------------------------------------
It must be to do with one of Tomcat connectors decoding '%20'.
I've tried an existing demo on Tomcat 7, did not see any issues, here is some
log output:
INFO: Starting ProtocolHandler ["http-bio-8080"]
01-Aug-2012 12:14:42 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
01-Aug-2012 12:14:42 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1883 ms
01-Aug-2012 12:15:09 org.apache.cxf.jaxrs.utils.JAXRSUtils findTargetMethod
WARNING: No operation matching request path
"/services/personservice/main/%20/1" is found, Relative Path: /%20/1, HTTP
Method: GET, ContentType: */*, Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,. Please enable
FINE/TRACE log level for more details.
Note I'm getting an expected warning above given that no
"/services/personservice/main/%20/1" is actually recognized by the demo
service, but it happens later after the code which throws an exception in your
case has been executed
> CXF JAX-RS can't handle spaces in the URL when used with Apache Tomcat
> ----------------------------------------------------------------------
>
> Key: CXF-4446
> URL: https://issues.apache.org/jira/browse/CXF-4446
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 2.6.1
> Environment: Scientific Linux 6.1, Apache Tomcat 7.0.22, Java 1.6.0_29
> Reporter: Andrew Rowley
>
> Putting an encoded space (%20) in the url gets the following exception:
> java.lang.IllegalArgumentException
> java.net.URI.create(URI.java:842)
>
> org.apache.cxf.transport.servlet.BaseUrlHelper.getBaseURL(BaseUrlHelper.java:49)
>
> org.apache.cxf.transport.servlet.ServletController.getBaseURL(ServletController.java:73)
>
> org.apache.cxf.transport.servlet.ServletController.updateDestination(ServletController.java:82)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> uk.ac.nactem.kalliope.security.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:85)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
>
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
>
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
> root cause
> java.net.URISyntaxException: Illegal character in path at index 50:
> http://www.nactem.ac.uk/ArgoDemoTest/services/test test
> java.net.URI$Parser.fail(URI.java:2809)
> java.net.URI$Parser.checkChars(URI.java:2982)
> java.net.URI$Parser.parseHierarchical(URI.java:3066)
> java.net.URI$Parser.parse(URI.java:3014)
> java.net.URI.<init>(URI.java:578)
> java.net.URI.create(URI.java:840)
>
> org.apache.cxf.transport.servlet.BaseUrlHelper.getBaseURL(BaseUrlHelper.java:49)
>
> org.apache.cxf.transport.servlet.ServletController.getBaseURL(ServletController.java:73)
>
> org.apache.cxf.transport.servlet.ServletController.updateDestination(ServletController.java:82)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> uk.ac.nactem.kalliope.security.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:85)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
>
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
>
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira