POC 用のサンプル Web アプリケーションを作成しました。このアプリケーションは、Amazon EC2 liberty 17.0.0.2 で実行されています。以下のように get リクエストをサーブレットに送信すると、AWS SQS にメッセージを送信する必要があります。
http://localhost:8080/TestSqsWeb/SqsServlet?message=Hello333
私たちの EC2 は企業 EC2 であり、インターネットに接続するにはプロキシが必要です。そこで、liberty の jvm.options ファイルでプロキシ構成を提供しました。
-Dhttps.nonProxyHosts=169.254.169.254|localhost|127.0.0.1
-Dhttp.nonProxyHosts=169.254.169.254|localhost|127.0.0.1
-Dhttp.proxyHost=proxy.ebiz.abc.com
-Dhttp.proxyPort=80
-Dhttps.proxyHost=proxy.ebiz.abc.com
-Dhttps.proxyPort=80
以下の例外を与え続けています。
org.apache.http.conn.ConnectTimeoutException: Connect to sqs.us-west-2.amazonaws.com:443 [sqs.us-west-2.amazonaws.com/52.119.168.22] failed: connect timed out
さらに分析した結果、接続中にプロキシ システムのプロパティを取得していないことがわかりました。System.getProperty を使用して、コード内のすべてのシステム プロパティを出力しました。システムのプロパティが出力されます。これは、構成が正しいことを意味します。
さらに分析するために、同じプロキシ構成で同じ EC2 の tomcat-8 に同じアプリをデプロイしましたが、動作しています。接続を確立し、メッセージを AWS SQS キューに送信できます。
この分析の後、自由には何らかの問題があると結論付けました。
[サンプル アプリのライブラリ][1]
[1]: https://i.stack.imgur.com/K2gbj.png
私が見つけた投稿の1つでは、古いバージョンのhttp-clientが原因で発生する可能性がありますが、上記のリンクでわかるように、最新のhttpclient-4.5.2.jarとhttpcore-4.4.4.jarを使用しています。
Liberty 17.0.0.2/17.0.0.3 で同じ問題に遭遇した人はいますか? IBM Java SDK-8 を使用しています。