Reputation: 716
I am attempting to connect to a SockJs web sockets server via Spring 4.2 WebsocketClient support. This is my client so far:
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);
}
this will provide the connection I need to subscribe to my channel. When I run the code, I get the following exception:
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)
I understand I need to provide a WebSocketContainer to the project in the META-INF folder, as instructed by the comments on the failing method:
* 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
But I do not understand how to wire a file into the constructor without any arguments. I have attempted to follow the examples in this test case but without any luck. I just need to understand what exactly the container is and how to implement it into my project
Upvotes: 6
Views: 9441
Reputation: 5040
Javax websocket only provides specification. It does not provide the implementation. To get full implementation you can use tyrus-standalone client.
If you are using Maven, add this dependency :
<dependency>
<groupId>org.glassfish.tyrus.bundles</groupId>
<artifactId>tyrus-standalone-client</artifactId>
<version>1.9</version>
</dependency>
Upvotes: 8