gpt4 book ai didi

Java/Tomcat : how to handle WebSocket setup completion

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:10 29 4
gpt4 key购买 nike

我有以下场景:具有相同应用程序的少数 Tomcat 实例需要在启动时相互连接。对于服务器之间的连接,使用 WebSockets (JSR-356)。当Tomcat启动后,我需要发起与另一台服务器的建立。

我怎样才能最正确地处理内部 WebSockets 机制,我可以开始使用 WebSockets?

应用程序基于 Spring 4。

我试过这个 Execute method on startup in spring , 这个How to add a hook to the application context initialization event?还有这个Tomcat after Startup Event with spring .

所有这些方法都很酷,但似乎在那一刻 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 继续启动。希望有一天它会对某人有所帮助。

关于Java/Tomcat : how to handle WebSocket setup completion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24380364/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com