2017-05-20 19 views
0

我有一個運行在EC2的Tomcat上的java應用程序,我想通過代理到達另一個EC2端點。讓我們把源https://source.com和目標https://destination.com和代理https://proxy.comJava:-Dhttps.proxyHost沒有被使用

症狀我有如下:

  1. 從我的源服務器擊中端點工作:
    • wget destination.com返回包括連接輸出到代理,然後連接到destination.com與200好。
  2. 當我嘗試通過源的API使用郵遞員撥打電話,我得到下面的錯誤:

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://destination.com": Connect to destination.com:80 ... connect timed out; nested exception is org.apache.http.conn.ConnectTimeoutException

我做的事:

  • 確認http和https代理已導出
    • 我有這兩個導出爲一個環境變量:
    • http_proxy=http://destination.com:80 https_proxy=http://destination.com:80
  • 驗證JAVA_OPTS包括代理信息,以及:

    • 運行ps -ef | grep app_name返回如下:

    • -Dhttp.proxyHost=destination.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=destination.com -Dhttps.proxyPort=80

即使這些信息導出,並在JAVA_OPTS(在setenv.sh設置),這似乎是API不使用代理到達目的地,因爲從服務器,我可以使用wget /捲曲通過代理到達端點。是否有另一個原因/位置,我錯過了導致API不使用代理?

我的Java版本在這裏:java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

在此先感謝。

回答

2

您沒有使用Java API。 http[s].proxyHost適用於HttpURLConnection和朋友。您似乎正在使用Apache HTTP客戶端,顯然不支持它們。

+0

感謝您的回覆。你是說我在使用Apache HTTP客戶端,因爲如果我使用Java API,上述信息足以使其工作?對不起,我的朋友主要是圍繞這個區域編碼的,我沒有全部的背景知識。 – Calpis

+0

@Calpis由於引發了異常,您顯然使用Apache HTTP客戶端。 – EJP

+0

啊明白了,謝謝你寶貴的見解! – Calpis