一尘不染

Java / Tomcat:如何处理WebSocket安装完成

tomcat

我有以下情形:具有相同应用程序的几个Tomcat实例在启动时需要相互连接。对于服务器之间的连接,使用WebSocket(JSR-356)。Tomcat启动后,我需要启动与另一台服务器的建立。

我如何最正确地处理内部WebSockets机制已启动并且可以开始使用WebSockets?

应用程序基于Spring 4。

我[在spring启动时尝试了此Execute方法,这如何向应用程序上下文初始化事件添加一个钩子?和Spring启动事件之后的Tomcat

所有这些方法都很酷,但是在那一刻,WebSockets仍不准备使用。抛出下一个异常:

javax.websocket.DeploymentException: The HTTP request to initiate the WebSocket connection failed    
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:373)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:201)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:222)
...
Caused by: java.util.concurrent.TimeoutException
at sun.nio.ch.PendingFuture.get(PendingFuture.java:197)
at org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:599)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:343)

现在,作为一种解决方法,我在建立连接之前在WebServlet的init()方法中使用了3秒的延迟,但是我想避免这种情况。

有任何想法吗?谢谢!


阅读 334

收藏
2020-06-16

共1个答案

一尘不染

我只是通过将连接建立设置为单独的线程来解决它。如果没有单独的线程,它将阻止Tomcat启动。希望对一天有帮助。

2020-06-16