我有以下情形:具有相同应用程序的几个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秒的延迟,但是我想避免这种情况。
有任何想法吗?谢谢!
我只是通过将连接建立设置为单独的线程来解决它。如果没有单独的线程,它将阻止Tomcat启动。希望对一天有帮助。