Я пытаюсь определить, почему приложение на основе Java какое-то время работает в качестве клиента, выполняющего вызовы веб-службы SOAP, а затем начинает выдавать исключение, из-за чего не может открыть сокет. Операционная система - Windows 2003 server SP1.
Вывод netstat -an показывает некоторые соединения в CLOSE_WAIT или TIME_WAIT, но этого недостаточно, чтобы предположить, что в самой ОС отсутствуют сокеты.
Я подозреваю, что есть ошибка в использовании клиентского API (Axis2 v1.4), из-за которой не удается переработать какой-то внутренний ресурс. Как только мы попадаем в состояние невозможности открыть сокет, мы должны перезапустить приложение Java. (Хотя, как ни странно, мы все еще можем выполнить вызов, используя простой java.net.URL).
Мне интересно, можем ли мы использовать Wireshark / Ethereal или что-то подобное, чтобы помочь диагностировать проблему с точки зрения ОС / сети?
Если это полезно, наша трассировка стека Java:
Вызвано: java.net.ConnectException: время ожидания соединения истекло: подключитесь к java.net.PlainSocketImpl.socketConnect (собственный метод) в java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:333) в java.net.PlainSocketImplress (connectToAdToAd 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.connect (Socket.java:466) на java.net.Socket. (Socket.java:366) на java.net.Socket. (Socket.java:239)
Большое спасибо за понимание. Дэн Хейвуд
В первой строке трассировки стека Java говорится: java.net.ConnectException: Connection timed out
. Это означает, что клиентская сторона успешно создала свой клиентский сокет и попыталась связаться с сервером, однако ответа не последовало. Ваша проблема не в клиенте. Мой совет - проверить, работает ли удаленный сервер. Затем убедитесь, что нет сетевых проблем, мешающих клиенту связаться с сервером.