Hello, I am trying to use embedded Grizzly to serve static files and
Jersey requests. I am trying to do this using the servlet-deployer
class GrizzlyWebServer. I cannot seem to successfully serve static
content and Jersey resources at the same time. I am using:
grizzly-servlet-deployer-1.9.18-SNAPSHOT.jar
grizzly-servlet-webserver-1.9.8.jar
jersey-core-1.1.1-ea.jar
jersey-server-1.1.1-ea.jar
Below are my various attempts to do this - can someone point out my
error? I'm unclear about what's expected for the String array passed
in to addGrizzlyAdapter. Any help would be much appreciated.
1. No jersey adapter - serves static fine:
private void launchGrizzly(int port, File docRoot) throws Exception {
_webServer = new GrizzlyWebServer(port, docRoot.getAbsolutePath());
_webServer.start();
}
Result: 200/serves static file
2. Simplest possible jersey adapter added:
_webServer = new GrizzlyWebServer(port, docRoot.getAbsolutePath());
ServletAdapter jerseyAdapter = new ServletAdapter();
jerseyAdapter.addInitParameter("com.sun.jersey.config.property.packages",
"mdt.web.jersey");
jerseyAdapter.setServletInstance(new ServletContainer());
_webServer.addGrizzlyAdapter(jerseyAdapter, new String[] {});
_webServer.start();
Result: 404
3. Perhaps that empty string array for the "mapping" for
addGrizzlyAdapter is incorrect - let's move jersey out of the way:
_webServer = new GrizzlyWebServer(port, docRoot.getAbsolutePath());
ServletAdapter jerseyAdapter = new ServletAdapter();
jerseyAdapter.addInitParameter("com.sun.jersey.config.property.packages",
"mdt.web.jersey");
jerseyAdapter.setServletInstance(new ServletContainer());
_webServer.addGrizzlyAdapter(jerseyAdapter, new String[] { "/jersey" });
_webServer.start();
Result: 404
4. Add an "empty adaptor" as recommended here:
http://blogs.sun.com/japod/entry/jersey_aplication_sharing_grizzly_with#comment-1244846255000
_webServer = new GrizzlyWebServer(port, docRoot.getAbsolutePath());
ServletAdapter jerseyAdapter = new ServletAdapter();
jerseyAdapter.addInitParameter("com.sun.jersey.config.property.packages",
"mdt.web.jersey");
jerseyAdapter.setServletInstance(new ServletContainer());
_webServer.addGrizzlyAdapter(jerseyAdapter, new String[] { "/" });
_webServer.addGrizzlyAdapter(new GrizzlyAdapter() {
@Override
public void service(GrizzlyRequest request, GrizzlyResponse response) {
}
}, new String[] { "/" });
_webServer.start();
Result: 200/OK, but no content is served:
< HTTP/1.1 200 OK
< Content-Length: 0
< Date: Thu, 06 Aug 2009 14:23:25 GMT
Unfortunately, this also happens for requests for bad requests that
should return a 404.