我试图配置嵌入式Jetty(7.6)来同时处理WebSocketHandler,ServletContextHandler和ResourceHandler类。针对websockets,servlet和资源处理程序的Jetty 7嵌入式配置
我已经尝试使用HandlerCollection和HandlerList类,但我无法获得所有3个部分的工作。
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);
在这种状态下,静态文件和该servlet的处理很好,但是当我发送的WebSocket请求时,我得到:
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)
...
,如果我检查基地的请求的状态“处理“我的websockets处理程序中的属性,它已被设置为true。所以这意味着我的请求正在处理并提交到myWebSocketHandler之前提交?
任何意见表示赞赏,谢谢。