集成glassfish servlet容器的springwebsocketstompclient中的java线程泄漏

kiz8lqtg  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(266)

我将websocketstompclient与包含名为“tyrus”的glassfish web套接字一起使用,如下所示:

WebSocketStompClient client;

ClientManager clientManager = org.glassfish.tyrus.client.ClientManager.createClient();

clientManager.getProperties().put(
    SELECTOR_THREAD_POOL_CONFIG,
    defaultConfig().setPoolName("ws-selector"));

clientManager.getProperties().put(
    WORKER_THREAD_POOL_CONFIG,
    defaultConfig().setPoolName("ws-worker"));

client = new WebSocketStompClient(new StandardWebSocketClient(clientManager));

client.start();

sesion = client.connect(uri, handshakeHeaders(clusterSecret), connectHeaders(), sesHnd).get(10L, SECONDS);

在成功的web套接字连接后,我收到错误消息,错误代码为400。 org.gridgain.control.agent.ControlCenterAgent.AfterConnectedSessionHandler#handleTransportErrorsesHnd 对象在此错误后执行,但是 DefaultStompSession 参数没有 connection 里面的东西。这个 connection 对象具有类型 org.springframework.web.socket.messaging.WebSocketStompClient.WebSocketTcpConnectionHandlerAdapter 而且它是 stop 方法在上创建所有servlet容器资源 session.disconnect() 以平常的方式。
但在我的例子中,我可以看到一些资源没有被释放。 Thread.getAllStackTraces() 返回一些 ws-selector 以及 ws-worker 我找不到方法来清除它们。
使用 spring-core , spring-websocket , spring-messaging 以及 spring-web 4.3.29.发布,以及 tyrus-standalone-client 1.17

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题