java jetty Maven websocket应用程序在localhost:8080上运行

时间:2015-11-17 22:57:05

标签: java web websocket server jetty

我有一个websocket web应用程序,我在Jetty上使用Maven运行。
使用我在客户端,服务器和web.xml文件中执行的所有设置,我希望应用程序在localhost:8080 / wsservlet上运行。但是,我只能在localhost:8080上运行它。

谁能帮助我理解为什么以及如何解决这个问题?谢谢。

MyServlet.java

@WebServlet(name = "WebSocketServlet", urlPatterns = { "/wsservlet" })
public class MyServlet extends WebSocketServlet {

   @Override
   public void configure(WebSocketServletFactory factory) {
          factory.register(MyWebSocket.class);
   }
}


MyWebsocket.java

@ServerEndpoint("/wsservlet") 
public class MyWebSocket {
    ...
}

在我的 html文件中,我还创建了一个websocket:

webSocket = new WebSocket("ws://localhost:8080/wsservlet");

我的 web.xml

<web-app>
  <display-name>WebSocketApp</display-name>
  <servlet>
    <servlet-name>wsservlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>wsservlet</servlet-name>
    <url-pattern>/wsservlet</url-pattern>
  </servlet-mapping>
</web-app>

1 个答案:

答案 0 :(得分:1)

您正在尝试将Jetty Native WebSockets(WebSocketServletWebSocketServletFactory位)与JSR356 WebSockets(@ServerEndpoint位)混合使用。

那不行。

使用一个或另一个。

你应该做什么

  1. 完全删除MyServlet
  2. 使用Jetty 9.2 +
  3. ${jetty.base}/start.ini
  4. 配置--module=websocket