在单个Jetty服务器中添加不同的处理程序

Pra*_*ath 13 jetty websocket

我需要一个带有多个servletHandler的jetty服务器.

HTTPServlet的:

    ServletHandler servletHandler = new ServletHandler();
    server.setHandler(servletHandler);
    servletHandler.addServletWithMapping("com.realtime.webserver.MyServlet", "/MyServlet");
Run Code Online (Sandbox Code Playgroud)

WebsocketServlet:

MyWebSocketHandler myWebSocketHandler = new MyWebSocketHandler ();
             myWebSocketHandler.setHandler(new DefaultHandler());
             server.setHandler(myWebSocketHandler);
             server.start();
Run Code Online (Sandbox Code Playgroud)

我需要两者都应该在单一服务器中.有可能吗?

Ami*_*ila 27

你可以使用org.eclipse.jetty.server.handler.HandlerCollection(Jetty 9)

HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(new Handler[] {servletHandler, myWebSocketHandler});
Run Code Online (Sandbox Code Playgroud)

稍后将处理程序添加到集合中:

handlerCollection.addHandler(newHandler);
Run Code Online (Sandbox Code Playgroud)

最后,

server.setHandler(handlerCollection);
server.start();
Run Code Online (Sandbox Code Playgroud)

  • 嘿.我按照你的意见,我可以去我的servlet,但是当我的WebSocket打开时,我收到错误"收到意外的压缩帧",然后关闭.如何更改处理程序的端口,以便它们在不同的通道上工作而不会互相干扰? (2认同)