我正在尝试在框架中的 Jetty 服务器上使用 STOMP 与 SockJS 和 ActiveMQ karaf osgi。我能够在嵌入式 Tomcat 服务器上运行 WebSocket,但在与 Jetty 服务器一起使用时出现问题。我的 karaf 在内部使用 Jetty 服务器。
transports.add(new WebSocketTransport(new StandardWebSocketClient())); // Got error for this in jetty
所以StandardWebSocketClient改为JettyWebSocketClient
public static void main( String[] args ) throws Exception {
StompSession session = createStompWSConnection(WEBSOCKET_URI, new MyStompSessionHandler());
System.out.println("Session = " + session.getSessionId());
}
public static StompSession createStompWSConnection(String socketURL,StompSessionHandler sessionHandler) throws Exception {
List<Transport> transports = new ArrayList<Transport>();
//transports.add(new WebSocketTransport(new StandardWebSocketClient()));
transports.add(new WebSocketTransport(new JettyWebSocketClient()));
SockJsClient sockJsClient = new SockJsClient(transports);
WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
//stompClient.setMessageConverter(new Mapp);
StompSession session = stompClient.connect(socketURL,sessionHandler).get(); //error occurs here
System.out.println("Session : " + session);
session.subscribe("/queue/msg", sessionHandler);
return session;
}
我收到此错误:
Caused by: java.lang.ClassNotFoundException: javax.websocket.ClientEndpointConfig$Configurator
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
编辑 2 -
添加了 Jetty Websocket 客户端依赖项,现在我收到此错误 -
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
<version>9.3.2.v20150730</version>
</dependency>
慕容3067478
守着一只汪
相关分类