В соединении отказано для HTTP-сервера Java, запущенного на локальном хосте

Как бы вы исследовали следующую проблему?

На конкретном сервере; любые HTTP-запросы, отправленные на сервер Java, работающий на локальном хосте, терпят неудачу с сообщением «Соединение отклонено». ( См. Код Java здесь )

В серверном приложении Java не видно никаких признаков проблем. Кажется, что порт слушает, но когда я пытаюсь отправить HTTP-запрос с cURL в приложение Java HTTP-Server; cURL регистрирует «В соединении отказано». (Я использую 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. Но он должен быть показан на самом деле. как ПРОСЛУШИВАНИЕ.

Подсказка: При запуске сервера в 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>
1
задан 19 October 2018 в 11:06
1 ответ

После выполнения следующих шагов, проблема больше не воспроизводима:

  • Остановка антивирусного сервиса Symantec
  • Переустановка Java JDK 8 u 171

После перезапуска антивирусного сервиса Symantec, проблема все еще не воспроизводима, и кажется, что проблема решена.

Теперь порты, открытые Java приложениями, появляются в Выходе "netstat -a", и они также реагируют, как и ожидалось. HTTP-запросы, отправленные в Java-приложение, теперь поступают в JVM, и ответы могут быть отправлены.

До сих пор не до конца ясно, что вызвало проблему.

.
0
ответ дан 4 December 2019 в 03:36

Теги

Похожие вопросы