我有一个独立的应用程序正在收听42555端口 .
并且GWT应用程序已部署到Tomcat服务器(版本6)中 . GWT应用程序通过SSL套接字与独立服务器通信 . 对于每个用户会话,在应用程序之间 Build 了三个套接字 . 当用户注销时,我们断开连接并关闭套接字 . 但是当我在Linux机器上执行netstat(独立和tomcat)时,我能够看到3个连接(每个用户)挂在CLOSE_WAIT状态 .
When user Active. The netstat give the following
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
After the user log out and socket disconnect/close. netstat gives
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应用程序 Build 的套接字没有完全关闭 . 但是当我使用开发模式(gwt应用程序)在本地Windows机器上运行服务器时,套接字正在完美关闭 . 这证明应用程序级别没有问题 . 但当我用Google搜索CLOSE_WAIT状态时,在tomcat方面也没有任何意义 .
有人能指出我发生错误的地方吗?
PS:我是网络和tcp / ssl堆栈中的新手,仅在2小时后才注销了netstat .