如何编写可以支持 Tomcat 或 WebLogic 实现的 Java WebSocket Servlet

age*_*154 1 java tomcat weblogic websocket

我正在为一个基于 Java 的大型 web 应用程序设计一个新的聊天模块,该应用程序默认使用 Tomcat,但支持我们的一个客户端的 WebLogic。我一直在研究为此目的使用 WebSocket,但我发现 WebSocket servlet 似乎没有通用接口,例如javax.servlet.http.HttpServlet.

因此,考虑到我可能需要为我希望使用的每个 servlet 容器定义不同的 servlet 实现,我该如何处理我 100% 不知道我在哪个容器中的情况?

eis*_*eis 6

您遵循规范。Java EE 7 具有在 JSR-356 中定义的 websocketTomcat 实现了 JSR-356 定义的 Java WebSocket 1.1 APIWebLogic也是如此

关键接口是ServerEndpoint

import javax.websocket.server.ServerEndpoint;
import javax.inject.Inject;

@ApplicationScoped
@ServerEndpoint("/actions")
public class DeviceWebSocketServer {

    @Inject
    private DeviceSessionHandler sessionHandler;

    @OnOpen
    public void open(Session session) {
    }

    ...
}    
Run Code Online (Sandbox Code Playgroud)

这是 Oracle 提供的有关如何执行此操作的教程(我引用了上面的示例)。

如果您安装 Tomcat,默认情况下会安装 Tomcat示例应用程序(代码链接:backendfrontend)中还有一个简单而酷的 websocket 示例。