Jetty9如何正确关闭WebSocketClient@线程问题?

问题描述 投票:0回答:1

码头版本 码头 9.4.53

码头环境 操作系统 jetty运行命令:./bin/jetty.sh run

Java版本 1.8.0_371x64

问题 我使用此代码创建了 Websocket 客户端连接

WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(this, URI.create(url));

如果服务器连接失败,重新连接时将继续使用此代码。 但是这段代码的每次执行都会创建 8 个线程 WebSocketClient@xxx-xxx 如果连接失败,连接池不会自动销毁。 我的代码

ContainerProvider.getWebSocketContainer();
->
org.eclipse.jetty.websocket.jsr356.ClientContainer
<111 line> ->
public ClientContainer()
->
WebSocketClient 
<95 line>->
 public WebSocketClient()
->
DefaultHttpClientProvider.get 
->
DefaultHttpClientProvider.newHttpClient

重新连接会创建一个新的线程池和8个线程。我如何关闭这个对象?在 Jetty 中不能这样创建一个 Websocket 客户端吗?

thread image

如何正确关闭WebSocketClient@线程问题?

java jetty end-of-life
1个回答
0
投票

Jakarta WebSocket 客户端容器(又名

jakarta.websocket.WebSocketContainer
,或者较旧的现已弃用且已停产的
javax.websocket.WebSocketContainer
)只能启动一次,并且您会一遍又一遍地使用该容器,直到 JVM 退出。

您不必为每个请求创建容器。

您将容器视为 Web 浏览器,您仅打开 1 个 Web 浏览器并使用它来访问许多不同的站点。

Jakarta EE WebSocket 的这一设计决策是有意为之的,因此 WebSocketContainer 没有关闭/停止/关闭 API。

如果您想重新连接,只需再次使用

connectToServer()
方法之一即可。

© www.soinside.com 2019 - 2024. All rights reserved.