Я пытаюсь настроить встроенный 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);
В этом состоянии статические файлы и сервлет обрабатываются нормально, но когда я отправляю запрос 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?
Любые комментарии приветствуются, спасибо.