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

Sergey Beryozkin edited comment on CXF-6929 at 6/20/16 2:44 PM:
----------------------------------------------------------------

It appears you use an older version of Jetty, please remove the direct jetty 
dependencies and instead add: 
{code:xml}
<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.1.7-SNAPSHOT</version>
</dependency>
{code}
and then rewrite your demo code as follows:
{code:java}
        org.eclipse.jetty.server.Server server = new 
org.eclipse.jetty.server.Server(9000);
        final ServletHolder servletHolder = new ServletHolder(new 
CXFNonSpringJaxrsServlet());
        final ServletContextHandler context = new ServletContextHandler();      
        context.setContextPath("/");
        context.addServlet(servletHolder, "/*");  
        
        servletHolder.setInitParameter( "jaxrs.serviceClasses", 
Resource.class.getName() );
        servletHolder.setInitParameter( "jaxrs.providers", 
Mapper.class.getName() );
                
        server.setHandler(context);
        server.start();
        server.join();
{code}

?

Works for me:

{noformat}
curl localhost:9000/foo -v

* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 9000 (#0)
> GET /foo HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:9000
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 20 Jun 2016 14:40:15 GMT
< Date: Mon, 20 Jun 2016 14:40:15 GMT
< Content-Length: 0
* Server Jetty(9.3.5.v20151012) is not blacklisted
< Server: Jetty(9.3.5.v20151012)
< 
* Connection #0 to host localhost left intact

{noformat}



was (Author: sergey_beryozkin):
It appears you use an older version of Jetty, please remove the direct jetty 
dependencies instead add: 
{code:xml}
<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.1.7-SNAPSHOT</version>
</dependency>
{code}
and then rewrite your demo code as follows:
{code:java}
        org.eclipse.jetty.server.Server server = new 
org.eclipse.jetty.server.Server(9000);
        final ServletHolder servletHolder = new ServletHolder(new 
CXFNonSpringJaxrsServlet());
        final ServletContextHandler context = new ServletContextHandler();      
        context.setContextPath("/");
        context.addServlet(servletHolder, "/*");  
        
        servletHolder.setInitParameter( "jaxrs.serviceClasses", 
Resource.class.getName() );
        servletHolder.setInitParameter( "jaxrs.providers", 
Mapper.class.getName() );
                
        server.setHandler(context);
        server.start();
        server.join();
{code}

?

Works for me:

{noformat}
curl localhost:9000/foo -v

* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 9000 (#0)
> GET /foo HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:9000
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 20 Jun 2016 14:40:15 GMT
< Date: Mon, 20 Jun 2016 14:40:15 GMT
< Content-Length: 0
* Server Jetty(9.3.5.v20151012) is not blacklisted
< Server: Jetty(9.3.5.v20151012)
< 
* Connection #0 to host localhost left intact

{noformat}


> Request hangs when using JAX-RS AsyncResponse and Exception mapper
> ------------------------------------------------------------------
>
>                 Key: CXF-6929
>                 URL: https://issues.apache.org/jira/browse/CXF-6929
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.1, 3.1.6
>            Reporter: Florian Diebold
>
> I have a JAX-RS resource which takes an AsyncResponse, but immediately throws 
> an exception before returning from the function. If the exception is then 
> mapped by an ExceptionMapper, the response seems to be never sent, and the 
> request hangs (stays suspended forever). Am I doing something wrong?
> Example code:
> {code}
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.Produces;
> import javax.ws.rs.container.AsyncResponse;
> import javax.ws.rs.container.Suspended;
> import javax.ws.rs.core.Response;
> import javax.ws.rs.ext.ExceptionMapper;
> import org.apache.commons.lang.NotImplementedException;
> import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet;
> import org.eclipse.jetty.server.Connector;
> import org.eclipse.jetty.server.Server;
> import org.eclipse.jetty.server.ServerConnector;
> import org.eclipse.jetty.servlet.ServletContextHandler;
> import org.eclipse.jetty.servlet.ServletHolder;
> public class ServerDemo2 {
>     public static void main( final String[] args ) throws Exception {
>         final Server server = new Server();
>         final ServerConnector connector = new ServerConnector( server );
>         connector.setHost( "localhost" );
>         connector.setPort( 8888 );
>         server.setConnectors( new Connector[] { connector } );
>         final ServletContextHandler handler = new ServletContextHandler();
>         final ServletHolder holder = new ServletHolder( 
> CXFNonSpringJaxrsServlet.class );
>         holder.setInitParameter( "jaxrs.serviceClasses", 
> Resource.class.getName() );
>         holder.setInitParameter( "jaxrs.providers", Mapper.class.getName() );
>         handler.addServlet( holder, "/*" );
>         server.setHandler( handler );
>         server.start();
>         System.in.read();
>         server.stop();
>     }
>     public static class Mapper implements 
> ExceptionMapper<NotImplementedException> {
>         @Override
>         public Response toResponse( final NotImplementedException exception ) 
> {
>             exception.printStackTrace();
>             return Response.ok().build();
>         }
>     }
>     @Path( "/" )
>     public static class Resource {
>         @GET
>         @Path( "/foo" )
>         @Produces( "text/plain" )
>         public void foo( @Suspended final AsyncResponse response ) {
>             throw new NotImplementedException( "foo" );
>         }
>         @GET
>         @Path( "/bar" )
>         @Produces( "text/plain" )
>         public void bar( @Suspended final AsyncResponse response ) {
>             throw new RuntimeException( "bar" );
>         }
>     }
> }
> {code}
> curl localhost:8888/foo hangs forever; curl localhost:8888/bar does not.



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

Reply via email to