次の問題をどのように調査しますか?
特定のサーバー。 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>
次の手順を実行した後;この問題は再現できなくなりました。
Symantec Anti-Virus Serviceを再起動した後。問題はまだ再現可能ではなく、問題は解決したようです。
これで、Javaアプリケーションによって開かれたポートが「netstat -a」の出力に表示され、期待どおりに応答します。 Javaアプリケーションに送信されたHTTP要求がJVMに到着し、応答を送信できるようになりました。
問題の原因はまだ完全には明らかではありません。