我有一个独立的应用程序正在收听42555端口。
GWT应用程序已部署到Tomcat服务器(版本6)中。 GWT应用程序通过SSL套接字与独立服务器通信。对于每个用户会话,在应用程序之间建立了三个套接字。当用户注销时,我们断开连接并关闭套接字。但是当我在Linux机器上执行netstat(独立和tomcat)时,我能够看到3个连接(每个用户)挂在CLOSE_WAIT状态。
当用户有效时。 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)
当用户在客户端单击logout时,我关闭inputStream,outputStream然后关闭socket。在独立服务器端,套接字保存在Map中(套接字以会话为基础进行映射),并在2小时后关闭(基于套接字的最后请求)。
看到这一切后,我无法确定问题。基于netstat,它显示tomcat应用程序建立的套接字没有完全关闭。但是当我使用开发模式(gwt应用程序)在本地Windows机器上运行服务器时,套接字正在完美关闭。这证明应用程序级别没有问题。但当我用Google搜索CLOSE_WAIT状态时,在tomcat方面也没有任何意义。
有人能指出我发生错误的地方吗?
PS:我是网络和tcp / ssl堆栈中的新手,并且仅在2小时后才注销了netstat。