[ 
https://issues.apache.org/jira/browse/CXF-7116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15625954#comment-15625954
 ] 

Sergey Beryozkin commented on CXF-7116:
---------------------------------------

Thanks for providing the test project. I've confirmed it only affects the 
service code which was created with the embedded Jetty transport, using the 
code like this one (with the jetty-webapp dep) works:
{code:java}
        org.eclipse.jetty.server.Server server = new 
org.eclipse.jetty.server.Server(port);
        final ServletHolder servletHolder = new ServletHolder(new 
CXFNonSpringJaxrsServlet());
        final ServletContextHandler context = new ServletContextHandler();      
        context.setContextPath("/");
        context.addServlet(servletHolder, "/*");  
        servletHolder.setInitParameter("jaxrs.serviceClasses", 
SimpleResource.class.getName());
        server.setHandler(context);
        server.start();
        // invoke
        server.stop();
{code}

Apparently this failure has been caused by removing the synchronized blocks 
(CXF-7037), looks like adding a 'synchronized' qualifier to 
AsyncResponseImpl.suspendContinuationIfNeeded only fixes this issue.  



> AsyncResponse.resume() infinitely hangs up after first call
> -----------------------------------------------------------
>
>                 Key: CXF-7116
>                 URL: https://issues.apache.org/jira/browse/CXF-7116
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.8
>         Environment: * Java - 1.8.0_66 (build 1.8.0_66-b17)
> * CXF - 3.1.8
> * Jetty - 9.3.13.v20161014
> * OS - OS X El Capitan 10.11.6
>            Reporter: Dmytro Khrystiuk
>              Labels: async
>         Attachments: cxf-issue.zip
>
>
> Issue with AsyncResponse happened after upgrade from CXF 3.1.7 to 3.1.8.
> After the second call to REST method server stops to respond. Implementation 
> of method uses AsyncResponse and call to resume() in a separate thread:
>     @GET
>     @Produces(MediaType.TEXT_PLAIN)
>     @Path("/doesNotWork")
>     public void doesNotWork(@Suspended AsyncResponse response) {
>         executorService.submit(() -> {
>             LOGGER.debug("Async task...");
>             response.resume("Success!");
>         });
>     }
> First call to method above works as it should but subsequent calls just hangs 
> up forever. No thread deadlocks were detected.
> The example test (Maven project) is attached to this item.



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

Reply via email to