Próbuję połączyć się z serwerem gniazd sieci SockJs przez Spring 4.2 WebsocketClient support. To jest mój dotychczasowy klient:Jak zaimplementować WebSocketContainer w klasie StandardWebSocketClient
public static void main(String[] args) throws Exception {
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new StringMessageConverter());
String url = "ws://localhost:8080/priceticker/ws";
StompSessionHandler handler = new WSClient() ;
stompClient.connect(url, handler);
}
zapewni to połączenie, którego potrzebuję do zasubskrybowania mojego kanału. Kiedy uruchomić kod, pojawia się następujący wyjątek:
Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class.
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73)
at org.springframework.web.socket.client.standard.StandardWebSocketClient.<init>(StandardWebSocketClient.java:76)
at Main.main(Main.java:10)
Rozumiem, że trzeba zapewnić WebSocketContainer do projektu w folderze META-INF, zgodnie z zaleceniami uwag dotyczących sposobu upadającego:
* Obtain a new instance of a WebSocketContainer. The method looks for the
* ContainerProvider implementation class in the order listed in the META-INF/services/javax.websocket.ContainerProvider
* file, returning the WebSocketContainer implementation from the ContainerProvider implementation
Ale nie rozumiem, jak podłączyć plik do konstruktora bez żadnych argumentów. Próbowałem wykonać przykłady w tym test case, ale bez powodzenia. Po prostu muszę zrozumieć, czym dokładnie jest kontener i jak go wdrożyć w mój projekt.
dzięki. To właśnie próbowałem osiągnąć. Dodałem zależność do mojej ścieżki klas, ale wciąż wyrzucam wyjątek. Czy muszę rozszerzyć klasę i nadpisać lub przekazać klasę kontenera do metody w jakiś sposób? –
@ a.hrdie nie musisz, masz ten sam wyjątek? – Karthik
tak, ten sam wyjątek. Myślę, że źle zrozumiałem konfigurację klienta. Czy ten projekt powinien być zawarty w serwecie WWW? –