[
https://issues.apache.org/jira/browse/CXF-7043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15472515#comment-15472515
]
ASF GitHub Bot commented on CXF-7043:
-------------------------------------
GitHub user tadayosi opened a pull request:
https://github.com/apache/cxf/pull/165
[CXF-7043] Fix JAXRSCxfContinuationsServlet3Test for 3.0.x
https://issues.apache.org/jira/browse/CXF-7043
`JAXRSCxfContinuationsServlet3Test` in the pull req #164 didn't work for
3.0.x branch, because a servlet context was needed to set up explicitly for
3.0.x and otherwise it threw NPE.
```
Caused by: java.lang.NullPointerException
at
org.apache.cxf.transport.servlet.ServletContextResourceResolver.getAsStream(ServletContextResourceResolver.java:54)
at
org.apache.cxf.transport.servlet.ServletContextResourceResolver.resolve(ServletContextResourceResolver.java:114)
at
org.apache.cxf.resource.DefaultResourceManager.findResource(DefaultResourceManager.java:113)
at
org.apache.cxf.resource.DefaultResourceManager.resolveResource(DefaultResourceManager.java:58)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.getResourceAsStream(AbstractHTTPServlet.java:153)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.finalizeServletInit(AbstractHTTPServlet.java:128)
at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:88)
at
org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532)
... 30 more
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/tadayosi/cxf CXF-7043_3.0.x
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/cxf/pull/165.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #165
----
commit 2abad6c48003aea15a0d2b8e918d23ced5726f5a
Author: Tadayoshi Sato <[email protected]>
Date: 2016-09-08T02:40:04Z
[CXF-7043] Fix JAXRSCxfContinuationsServlet3Test for 3.0.x
----
> 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
> Assignee: Sergey Beryozkin
> Fix For: 3.2.0, 3.1.8, 3.0.11
>
> Attachments: cxf-rest-async.zip
>
>
> 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)