【发布时间】:2012-03-12 16:14:51
【问题描述】:
我正在尝试配置嵌入式 Jetty (7.6) 以同时处理 WebSocketHandler、ServletContextHandler 和 ResourceHandler 类。
我已尝试同时使用 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 之前已经被处理并提交了?
感谢任何cmets,谢谢。
【问题讨论】:
标签: servlets jetty websocket handler embedded-jetty