我有一个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(WebSocketServlet
和WebSocketServletFactory
位)与JSR356 WebSockets)(@ServerEndpoint
位)混合使用。
那行不通。
使用一个或另一个。
你应该做什么
- 完全删除
MyServlet
- 使用9.2码头+
- 将
${jetty.base}/start.ini
配置为--module=websocket