【问题标题】:java jetty Maven websocket application runs on localhost:8080java jetty Maven websocket 应用程序在 localhost:8080 上运行
【发布时间】:2016-02-19 12:24:51
【问题描述】:

我有一个使用 Maven 在 Jetty 上运行的 websocket Web 应用程序。
通过我在客户端、服务器和 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>

【问题讨论】:

    标签: java web websocket server jetty


    【解决方案1】:

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

    那行不通。

    使用一个,或另一个。

    你应该怎么做

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

    【讨论】:

    • 谢谢 Joakim,我添加 Servlet 的原因是因为我希望以后能够从项目中创建一个 war 文件(我还没有能够做到,似乎有些事情是不对);而且我认为没有 servlet(进入 servletin web.xml)是不可能发生战争的。是否可以解决上述问题,也可以制作war文件?非常感谢。
    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2012-05-27
    相关资源
    最近更新 更多