JBoss.orgCommunity Documentation
Asynchronous request processing is another case in which a facility from Resteasy 2 has been formalized in JAX-RS 2.0. The result in Resteasy is quite similar to the old version. For example,
@Path("/")
public static class TestResource
{
@GET
@Produces("text/plain")
public void test(@Suspend(2000) AsynchronousResponse response)
{
Thread t = new Thread()
{
@Override
public void run()
{
try
{
System.out.println("STARTED!!!!");
Thread.sleep(100);
Response jaxrs = Response.ok().type("text/plain").build();
response.setResponse(jaxrs);
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
t.start();
}
}
would be turned into
@Path("/")
public static class TestResource
{
@GET
@Produces("text/plain")
public void get(@Suspended final AsyncResponse response)
{
response.setTimeout(2000, TimeUnit.MILLISECONDS);
Thread t = new Thread()
{
@Override
public void run()
{
try
{
System.out.println("STARTED!!!!");
Thread.sleep(100);
Response jaxrs = Response.ok().type("text/plain").build();
response.setResponse(jaxrs);
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
t.start();
}
}
Other than the name changes, the one change to note is that the @Suspended
annotation does not have a timeout field. Instead, the timeout can be set on the
AsyncResponse.