2014-06-24 5 views
2

다음과 같은 시나리오가 있습니다. 동일한 응용 프로그램을 가진 Tomcat 인스턴스가 거의 없어 시작할 때 서로 연결할 필요가 있습니다. 서버 간 연결을 위해 WebSocket (JSR-356)이 사용됩니다. Tomcat이 시작되면 다른 서버로 설정을 초기화해야합니다.Java/Tomcat : WebSocket 설정 완료 처리 방법

가장 올바르게 처리 할 수있는 방법은 내부 WebSockets 메커니즘이 작동하고 WebSocket을 사용할 수 있습니까?

응용 프로그램이

봄 (4)을 기반으로 나는이 Execute method on startup in springHow 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 초 지연() 메소드를 사용하지만 좀 내가 피할 싶습니다 해킹있다.

아이디어가 있으십니까? 감사!

+0

왜 웹 소켓입니까? 커넥터를 사용할 때까지 기다려야합니다. 응용 프로그램이 준비되면 커넥터가 나타납니다. 응용 프로그램은 시작 후크가 실행되면 준비가됩니다. 죄송합니다. –

+0

질문에서 언급했듯이 응용 프로그램 컨텍스트가 작동하지만 운이 없을 때 웹 소켓 연결을 시작하려고했습니다. 해당 커넥터를 처리하는 방법을 더 자세히 설명해주십시오. – walv

답변

1

연결 설정을 별도의 스레드로 설정하여 해결했습니다. 별도의 스레드가 없으면 Tomcat을 계속 시작할 수 없습니다. 누군가에게 도움이되기를 바랍니다.