我试图诊断为什么一个基于Java的应用程序运行一段时间作为一个客户端进行SOAP Web服务调用,然后开始打一个exception,从而无法打开套接字。 操作系统是Windows 2003服务器SP1。
netstat -an输出在CLOSE_WAIT或TIME_WAIT中显示一些连接,但不足以暗示操作系统本身不在套接字中。
我怀疑客户端API的使用方式(Axis2 v1.4)存在错误,导致无法回收一些内部资源。 一旦我们遇到无法打开套接字的情况,我们必须重新启动Java应用程序。 (有点奇怪,但是,我们仍然可以使用简单的java.net.URL进行调用)。
我想知道如果我们可以使用Wireshark / Ethereal或类似的从OS /networking的angular度来帮助诊断问题?
万一它是有用的,我们的Java堆栈跟踪是:
导致:java.net.ConnectException:连接超时:连接在java.net.PlainSocketImpl.socketConnect(本地方法)在java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)在java.net.PlainSocketImpl.connectToAddress( PlainSocketImpl.java:195)在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)在java.net.Socket.connect(Socket.java:516 )在java.net.Socket的java.net.Socket.connect(Socket.java:466)。(Socket.java:366)at java.net.Socket。(Socket.java:239)
非常感谢任何见解。 丹海伍德
Java堆栈跟踪的第一行说java.net.ConnectException: Connection timed out 。 这表明客户端成功创build了客户端套接字并尝试联系服务器,但是没有回应。 你的问题不在客户端。 我的build议是调查远程服务器是否启动。 接下来确保没有networking问题阻止客户端联系服务器。