我有一个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>
答案 0 :(得分:1)
您正在尝试将Jetty Native WebSockets(WebSocketServlet
和WebSocketServletFactory
位)与JSR356 WebSockets(@ServerEndpoint
位)混合使用。
那不行。
使用一个或另一个。
你应该做什么
MyServlet
${jetty.base}/start.ini
--module=websocket
醇>