다음과 같은 시나리오가 있습니다. 동일한 응용 프로그램을 가진 Tomcat 인스턴스가 거의 없어 시작할 때 서로 연결할 필요가 있습니다. 서버 간 연결을 위해 WebSocket (JSR-356)이 사용됩니다. Tomcat이 시작되면 다른 서버로 설정을 초기화해야합니다.Java/Tomcat : WebSocket 설정 완료 처리 방법
가장 올바르게 처리 할 수있는 방법은 내부 WebSockets 메커니즘이 작동하고 WebSocket을 사용할 수 있습니까?
응용 프로그램이
봄 (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 초 지연() 메소드를 사용하지만 좀 내가 피할 싶습니다 해킹있다.
아이디어가 있으십니까? 감사!
왜 웹 소켓입니까? 커넥터를 사용할 때까지 기다려야합니다. 응용 프로그램이 준비되면 커넥터가 나타납니다. 응용 프로그램은 시작 후크가 실행되면 준비가됩니다. 죄송합니다. –
질문에서 언급했듯이 응용 프로그램 컨텍스트가 작동하지만 운이 없을 때 웹 소켓 연결을 시작하려고했습니다. 해당 커넥터를 처리하는 방법을 더 자세히 설명해주십시오. – walv