为了账号安全,请及时绑定邮箱和手机立即绑定

Jetty 服务器上的 STOMP sockJS 和 ActiveMQ

Jetty 服务器上的 STOMP sockJS 和 ActiveMQ

DIEA 2023-06-21 13:52:10
我正在尝试在框架中的 Jetty 服务器上使用 STOMP 与 SockJS 和 ActiveMQ karaf osgi。我能够在嵌入式 Tomcat 服务器上运行 WebSocket,但在与 Jetty 服务器一起使用时出现问题。我的 karaf 在内部使用 Jetty 服务器。 transports.add(new WebSocketTransport(new StandardWebSocketClient())); // Got error for this in jetty所以StandardWebSocketClient改为JettyWebSocketClientpublic 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>
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

异常表明问题是什么:

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

javax.websocket.ClientEndpointConfig$Configurator找不到该类。请确保正确的类加载器可以访问所有必要的类来运行您的应用程序。


查看完整回答
反对 回复 2023-06-21
?
守着一只汪

TA贡献1872条经验 获得超3个赞

问题是在连接时stompClient.connect(socketURL,sessionHandler).get();我还添加了实际发生错误的注释。transports.add(new WebSocketTransport(new JettyWebSocketClient()));我通过替换为解决了这个问题transports.add(new RestTemplateXhrTransport());


以下是变化:


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()));

    transports.add(new RestTemplateXhrTransport());

    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;

}


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信