SO here is code for my Jersey class (unrelevant part are skipped)
@Path("/taxonomy")
public class JerseyTaxonomyServletAsync {
private final ExecutorService QUEUE_EXECUTOR = Executors
.newCachedThreadPool(new
ThreadFactoryBuilder().setNameFormat(
"Taxonomy-executor-%d").build());
public JerseyTaxonomyServletAsync() {
}
@GET
@Produces(MediaType.APPLICATION_XML)
public void getTaxonomy(@Suspended final AsyncResponse ar) {
ar.setTimeoutHandler(new TimeoutHandler() {
@Override public void handleTimeout(AsyncResponse
asyncResponse) {
asyncResponse.cancel(60);
}
});
QUEUE_EXECUTOR.submit(new Runnable() {
@Override public void run() {
try {
TaxonomyResponse taxonomyResponse = new
TaxonomyResponse();
ar.resume(taxonomyResponse);
}
catch (Exception ex) {
ar.cancel();
}
}
});
return;
}
}
And here is the code of my unit test which calls the service:. The
statement that causes the error is:
Response response =
client.target(UriBuilder.fromUri("
http://localhost:9998").path("/taxono
my").build())
.request(MediaType.APPLICATION_XML).get(Response.class);
import javax.servlet.http.HttpServlet;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientFactory;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.servlet.GuiceFilter;
import com.sun.grizzly.http.embed.GrizzlyWebServer;
import com.sun.grizzly.http.servlet.ServletAdapter;
public void testWithGrizzly() throws IllegalArgumentException,
NullPointerException, IOException {
GrizzlyWebServer server = new GrizzlyWebServer(9998);
ServletAdapter adapter = new ServletAdapter(new DummySevlet());
// GuiceServletConfig is a guice DI config class
adapter.addServletListener(GuiceServletConfig.class.getName());
adapter.addFilter(new GuiceFilter(), "GuiceFilter", null);
server.addGrizzlyAdapter(adapter, new String[]{ "/" });
server.start();
Client client = ClientFactory.newClient();
Response response =
client.target(UriBuilder.fromUri("
http://localhost:9998").path("/taxono
my").build())
.request(MediaType.APPLICATION_XML).get(Response.class);
int responseCode = response.getStatus();
TaxonomyResponse taxonomyResponse =
response.readEntity(TaxonomyResponse.class);
//String responseMsg =
webResource.path("getAttributes").get(String.class);
// assertEquals("Hello World", responseMsg);
assertEquals(responseCode, 200);
server.stop();
}