cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tadayoshi Sato (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-7043) JAX-RS endpoints cannot handle encoded URL when used with continuation and servlet transport
Date Wed, 07 Sep 2016 08:20:20 GMT
Tadayoshi Sato created CXF-7043:
-----------------------------------

             Summary: JAX-RS endpoints cannot handle encoded URL when used with continuation
and servlet transport
                 Key: CXF-7043
                 URL: https://issues.apache.org/jira/browse/CXF-7043
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS, Transports
    Affects Versions: 3.1.7
            Reporter: Tadayoshi Sato


Suppose a JAX-RS endpoint like below uses CXF Continuations API to handle requests asynchronously:
{code:java}
@Path("/greeting")
public class GreetingService {
    @GET @Path("/hello/{name}")
    public String hello(@PathParam("name") String name) {
{code}
When this endpoint is invoked with an URL containing encoded characters (e.g. {{"%20"}}):
{code}
http://localhost:9000/greeting/hello/A%20B%20C
{code}
it fails to handle it and throws the following exception:
{code}
java.lang.IllegalArgumentException: Illegal character in path at index 38: http://localhost:9000/greeting/hello/A
B C
	at java.net.URI.create(URI.java:852)
	at org.apache.cxf.transport.servlet.BaseUrlHelper.getBaseURL(BaseUrlHelper.java:48)
	at org.apache.cxf.transport.servlet.ServletController.getBaseURL(ServletController.java:74)
	at org.apache.cxf.transport.servlet.ServletController.updateDestination(ServletController.java:83)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:207)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:223)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:517)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handleAsync(Server.java:549)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:318)
	at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:262)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.URISyntaxException: Illegal character in path at index 38: http://localhost:9000/greeting/hello/A
B C
	at java.net.URI$Parser.fail(URI.java:2848)
	at java.net.URI$Parser.checkChars(URI.java:3021)
	at java.net.URI$Parser.parseHierarchical(URI.java:3105)
	at java.net.URI$Parser.parse(URI.java:3053)
	at java.net.URI.<init>(URI.java:588)
	at java.net.URI.create(URI.java:850)
	... 21 more
{code}

Note this issue happens only when the endpoint is used with Servlet Transport. It doesn't
happen when it's used with Jetty HTTP Transport.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message