Java Websocket 1.0 Websocket servlet的替换

Java Websocket 1.0 Websocket servlet的替换,java,websocket,tomcat7,servlet-3.0,Java,Websocket,Tomcat7,Servlet 3.0,我正在尝试采用使用(现在已弃用)WebSocketServlet的旧代码。旧代码如下所示: @Singleton ExampleServlet extends WebSocketServlet { @Override protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) { // Do something // .

我正在尝试采用使用(现在已弃用)WebSocketServlet的旧代码。旧代码如下所示:

@Singleton
ExampleServlet extends WebSocketServlet {
    @Override
    protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) {
        // Do something
        // ...

        return // StreamInbound impl;
    }
}
正如我在tomcat 7的较新版本中所说的,有一个从tomcat 8(WebSocket 1.0,Tyrus)后端口的WebSocket实现,并且类
WebSocketServlet
已被弃用


我应该用什么来代替用更新的API部署我的servlet?

我回答这个老问题,因为如果你想替换WebSocketServlet,这是google的第一个成功案例

替换为JSR356 WebSocket 1.0实现,并将在Tomcat 8.0.x中删除

因此,您只需要javaxwebsocket依赖性

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.0</version>
</dependency>

javax.websocket


就这样。

关于KIC的答案,这并不是所需要的全部。
由于JSR356应与Tomcat 8.*一起使用,因此需要从以下位置修改类:

class MyWebSocket extends WebSocketServlet
致:

import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(value="/your-websocket-endpoint")
class MyWebSocket
然后,由于Tomcat 8.*中也不推荐使用
StreamInbound
,因此您需要编写自己的方法来处理打开、关闭、错误和消息事件:

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;

@OnOpen
void onOpen(Session session) { }

@OnClose
void onClose(Session session) { }

@OnMessage
void onMessage(Session session, String message) { }

@OnError
void onError(Session session, Throwable throwable) { }
最后,Tomcat已经提供了javax.websocket.*类,不应该包含在应用程序中。对于Maven,依赖项是:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>
请参阅相关帖子 .

看看大气。它将保护您免受所有API更改的影响,并将透明地在Tomcat7/8上工作。
providedCompile 'javax.websocket:javax.websocket-api:1.0'