I am trying to configure embedded Jetty (7.6) to manage the WebSocketHandler, ServletContextHandler, and ResourceHandler classes at the same time.
I tried using the HandlerCollection and HandlerList classes, but I can't get all 3 parts to work.
Server server = new Server(8081); // static files handler ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setDirectoriesListed(true); resourceHandler.setResourceBase("./src/main/webapp/"); // servlet handler ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); servletContextHandler.setContextPath("/"); servletContextHandler.addServlet(new ServletHolder(new myServlet()), "/myServlet"); // websocket handler myWebSocketHandler myWebSocketHandler = new myWebSocketHandler(); // putting it together HandlerCollection handlerList = new HandlerCollection(); handlerList.setHandlers(new Handler[]{resourceHandler,myWebSocketHandler,servletContextHandler}); server.setHandler(handlerList);
In this state, the static files and the servlet are processed fine, but when I send a request to the web feed, I get:
2012-02-22 10:16:44.703:WARN:oejs.Response:Committed before 503 null 2012-02-22 10:16:44.705:WARN:oejs.AbstractHttpConnection:/ java.lang.IllegalStateException: Committed at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1080) ...
and if I check the status of the underlying request for a “processed” property inside my websockets handler, it is already set to true. So this means that my request is processed and committed before it gets into myWebSocketHandler?
Any comments are appreciated, thanks.
Taran source share