【问题标题】:Adding different handler in single Jetty server在单个 Jetty 服务器中添加不同的处理程序
【发布时间】:2013-06-17 13:33:05
【问题描述】:

我需要一个带有多个 servletHandler 的码头服务器。

HTTPservlet:

    ServletHandler servletHandler = new ServletHandler();
    server.setHandler(servletHandler);
    servletHandler.addServletWithMapping("com.realtime.webserver.MyServlet", "/MyServlet");

WebsocketServlet:

MyWebSocketHandler myWebSocketHandler = new MyWebSocketHandler ();
             myWebSocketHandler.setHandler(new DefaultHandler());
             server.setHandler(myWebSocketHandler);
             server.start();

我需要两者都应该在单个服务器中。 有没有可能?

【问题讨论】:

    标签: websocket jetty


    【解决方案1】:

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

    HandlerCollection handlerCollection = new HandlerCollection();
    handlerCollection.setHandlers(new Handler[] {servletHandler, myWebSocketHandler});
    

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

    handlerCollection.addHandler(newHandler);
    

    最后,

    server.setHandler(handlerCollection);
    server.start();
    

    【讨论】:

    • 嘿。我听从了你的建议,我可以去我的 servlet,但是当我的 WebSocket 打开时,我收到错误“收到意外的压缩帧”,然后关闭。如何更改我的处理程序的端口,以便它们在不同的通道上工作并且不会互相干扰?
    • 不错!非常感谢!
    【解决方案2】:

    http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyHandlers.java

    这是在同一台服务器上同时使用多个处理程序的示例。

    最终它将被添加到这里的文档中:

    http://www.eclipse.org/jetty/documentation/current/embedded-examples.html

    在此之前,还有许多其他示例也应该有助于使事情变得更清晰。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2016-07-20
      • 2021-11-24
      相关资源
      最近更新 更多