Как бы вы исследовали следующую проблему?
На определенном сервере; любые HTTP-запросы, отправленные на сервер Java, работающий на локальном хосте, терпят неудачу с сообщением «Соединение отклонено». (См. Код Java здесь)
В Java Server-Application никаких признаков проблем не видно. Кажется, что порт слушает, но когда я пытаюсь отправить HTTP-запрос с cURL в приложение Java HTTP-Server; cURL регистрирует «В соединении отказано». (Я использую завиток в Mingw в системе Windows 10)
Запущенное приложение Java Server:
C:\test>java LogTCP_S 8000
Listening on port:8000, type Crtl-C to finish
Команда curl [NOK]:
$ curl localhost:8000
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
curl: (7) Failed to connect to localhost port 8000: Connection refused
На моей рабочей станции работает тот же код Java, что и ожидалось.
Я также пробовал другое приложение Java. Я получил тот же результат, используя код из следующего ответа от StackOverflow: простой HTTP-сервер на Java с использованием только Java SE API
Проблема возникает в системе Windows 10. Существует несколько инструментов для обнаружения аномалий и приложений брандмауэра, и нам трудно определить источник проблемы.
Подсказка: netstat -a не отображает порт 8000. Но на самом деле он должен отображаться как LISTENING.
Подсказка: При запуске сервера в PowerShell (как описано здесь), связь работает должным образом. Порт PowerShell Server будет указан в выходных данных netstat -a, а запросы вернут HTTP 200 и ожидаемое содержимое.
Не могли бы вы подсказать, как отладить, исследовать или решить эту проблему? Какие инструменты могут быть полезны при исследовании таких проблем?
Любая помощь будет принята с благодарностью.
Большое спасибо.
Версия Java:
C:\>java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
Вывод сервера PowerShell:
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\Temp\_test\PowerShell> .\server.ps1
[PowerShell] Listening at http://localhost:8000/... (port 8000)
> http://localhost:8000/ola
< 200
curl, когда работает PowerShell [OK]:
$ curl localhost:8000/ola
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 38 100 38 0 0 612 0 --:--:-- --:--:-- --:--:-- 612
<html><body>Hello world!</body></html>
После выполнения следующих шагов; проблема больше не воспроизводилась:
После перезапуска службы Symantec Anti-Virus; проблема все еще не воспроизводится, и проблема, кажется, решена.
Теперь порты, которые открываются приложениями Java, появляются в выводе «netstat -a», и они также отвечают ожидаемым образом. HTTP-запросы, отправленные в приложение Java, теперь поступают в JVM, и ответы могут быть отправлены.
До сих пор не совсем ясно, что вызвало проблему.