我正在为基于Java的大型Web应用程序设计一个新的聊天模块,默认情况下使用Tomcat,但我们的客户端支持WebLogic。我一直在考虑使用WebSocket,但我发现WebSocket servlet似乎没有通用接口,例如javax.servlet.http.HttpServlet
。
因此,考虑到我可能需要为我希望使用的每个servlet容器定义不同的servlet实现,我该如何处理我不知道100%的容器我是哪个容器的情况在?
答案 0 :(得分:2)
您遵循规范。 Java EE 7 has websockets, which were defined in JSR-356。 Tomcat implements the Java WebSocket 1.1 API defined by JSR-356和so does WebLogic。
键界面为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) {
}
...
}
Here's a tutorial by Oracle关于如何做到这一点(我引用上面的例子)。
在Tomcat示例应用程序(代码链接:backend,frontend)中还有简单而酷炫的websocket示例,如果您安装Tomcat,则默认安装这些示例。