有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SSLsocket卡在关闭\u等待中

我有一个独立的应用程序正在监听42555端口

GWT应用程序被部署到Tomcat服务器(版本6)。GWT应用程序通过SSLsocket与独立服务器通信。对于每个用户会话,在应用程序之间建立三个socket。当用户注销时,我们断开连接并关闭socket。但是,当我在Linux机器(单机版和tomcat版)上运行netstat时,我可以看到3个连接(基于每个用户)处于关闭等待状态

当用户处于活动状态时。netstat提供以下信息

tcp        0      0 127.0.0.1:60143             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:60144             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:60145             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:42555             127.0.0.1:60143             ESTABLISHED 30525/./standalone_server
tcp        0      0 127.0.0.1:42555             127.0.0.1:60144             ESTABLISHED 30525/./standalone_server
tcp        0      0 127.0.0.1:42555             127.0.0.1:60145             ESTABLISHED 30525/./standalone_server

用户注销并断开/关闭插座后。netstat提供

tcp       70      0 127.0.0.1:60143             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)
tcp       70      0 127.0.0.1:60145             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)
tcp       70      0 127.0.0.1:60144             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)

当用户在客户端单击注销时,我将关闭inputStream、outputStream和socket。在独立服务器端,socket保存在映射中(socket映射为会话基础),并在2小时后关闭(基于socket的最后一个请求)

看到这一切后,我无法确定问题所在。基于netstat,它显示tomcat应用程序建立的socket并没有完全关闭。但是,当我在本地windows机器上以开发模式(gwt应用程序)运行服务器时,socket完全关闭了。这证明了应用程序级别没有问题。但当我在谷歌上搜索CLOSE_WAIT state时,在tomcat方面也没什么意义

有人能告诉我错误发生在哪里吗

PS:我是网络和tcp/ssl协议栈的新手,注销的netstat仅在2小时后完成


共 (0) 个答案