Ich habe eine Java-Anwendung auf Tomcat in EC2 ausgeführt und möchte einen anderen EC2-Endpunkt über einen Proxy erreichen. Nennen wir das die Quelle https://source.com
und Ziel https://destination.com
und der Proxy https://proxy.com
Java: -Dhttps.proxyHost wird nicht verwendet
Das Symptom Ich habe ist folgendes:
- Schlagen Sie den Endpunkt aus meinem Quellserver funktioniert:
wget destination.com
eine Ausgabe einschließlich Verbindungszurück an den Proxy und dann andestination.com
mit einem 200 ok verbinden.
- Wenn ich versuche, den Anruf zu tätigen über die API auf die Quelle mit Postbote, erhalte ich die folgenden Fehler:
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
Dinge, die ich getan habe:
- Überprüfen Sie, dass der HTTP- und HTTPS-Proxy exportiert wird
- Ich habe diese beiden als Umgebungsvariable exportiert:
http_proxy=http://destination.com:80 https_proxy=http://destination.com:80
Stellen Sie sicher, dass JAVA_OPTS die Proxy-Informationen umfassen auch:
läuft
ps -ef | grep app_name
gibt Folgendes zurück:-Dhttp.proxyHost=destination.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=destination.com -Dhttps.proxyPort=80
Auch mit diesen Informationen exportierten und in dem JAVA_OPTS (in dem setenv.sh
), scheint es, wie die API ist die Proxy nicht mit dem Ziel zu erreichen, weil von dem Server, ich wget verwenden können/curl Erreichen Sie den Endpunkt über den Proxy. Könnte es einen anderen Grund/Standort geben, den ich verpasst habe, der dazu führt, dass die API den Proxy nicht verwendet?
Meine Java-Version hier: 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)
Vielen Dank im Voraus.
danke für Ihre Antwort. Wollen Sie damit sagen, dass ich den Apache HTTP Client verwende, weil die oben genannten Informationen ausreichen, um die Java API zu verwenden? Entschuldigung, mein Freund hat hauptsächlich in diesem Bereich gecodiert und ich habe nicht den ganzen Hintergrund dazu. – Calpis
@Calpis Sie verwenden offensichtlich den Apache HTTP-Client wegen der ausgelösten Ausnahme. – EJP
AH verstanden, danke für die wertvolle Einsicht! – Calpis