web-dev-qa-db-ja.com

接続が拒否されましたJava localhostで実行されているHTTPサーバー

次の問題をどのように調査しますか?

特定のサーバー。 Java localhostで実行されているサーバーが「接続が拒否されました」で失敗する( Javaコードはこちら)を参照

Java Server-Applicationには問題の兆候はありません。ポートはリッスンしているようですが、cURLを使用してHTTPリクエストをJava HTTP-Serverアプリケーション; cURLは「接続拒否」をログに記録します(Windows 10システムでは mingw でcurlを使用します)

開始済みJavaサーバーアプリケーション:

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からの以下の回答からのコードを使用して同じ結果を得ました: simple HTTP server in Java =のみを使用Java SE API

この問題は、Windows 10システムで発生します。いくつかの異常検出ツールとファイアウォールアプリケーションがあり、問題の原因を特定するのに苦労しています。

ヒント:netstat -aはポート8000​​を一覧表示しません。ただし、実際にはLISTENINGとして表示されるはずです。

ヒント:PowerShellでサーバーを起動すると( ここで説明 )、通信は期待どおりに機能します。 PowerShellサーバーのポートが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

カールの出力、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>
2
Attila

次の手順を実行した後;この問題は再現できなくなりました。

  • Symantec Anti-Virusサービスを停止しました
  • 再インストールJava JDK 8 u 171

Symantec Anti-Virus Serviceを再起動した後。問題はまだ再現可能ではなく、問題は解決したようです。

これで、Javaアプリケーションによって開かれたポートが「netstat -a」の出力に表示され、期待どおりに応答します。 Javaアプリケーションに送信されたHTTP要求がJVMに到着し、応答を送信できるようになりました。

問題の原因はまだ完全には明らかではありません。

0
Attila