javajettyMaven websocket应用程序在localhost:8080上运行



我有一个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");

myweb.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>

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

那行不通。

使用一个或另一个。

你应该做什么

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

相关内容

  • 没有找到相关文章

最新更新