Un servlet s'exécute sur Tomcat7 et un service Web appelle un site Web tiers. L'appel fonctionne correctement à partir de la machine Windows mais échoue lorsqu'il est exécuté à partir de Tomcat. Wont Tomcat utilise automatiquement le Paramètres de proxy de Windows? J'ai ajouté
set Java_OPTS=%Java_OPTS% "-Dhttp.proxySet=true"
set Java_OPTS=%Java_OPTS% "-Dhttp.proxyHost=IP"
set Java_OPTS=%Java_OPTS% "-Dhttp.proxyPort=8080"
cATALINA.BAT et
http.proxyHost=IP
http.proxyPort=8080
to catalina.properties Mais il n'y a toujours pas de changement. Comment pouvons-nous configurer Tomcat pour qu'il utilise les paramètres de proxy de Windows et existe-t-il un moyen de vérifier si Tomcat prend bien les paramètres de proxy spécifiés?
Non, Tomcat n'utilisera pas automatiquement les paramètres de proxy du système.
Je vous suggère de regarder dans les installations fournies par Java.net.Proxy
. Cela vous permet de spécifier dynamiquement un proxy lors de l'exécution. Les propriétés système fonctionnent, mais elles ne sont lues qu'une seule fois, et si Tomcat a déjà utilisé une HttpURLConnection
à ses propres fins avant de les définir, c'est tout: le paramètre n'a aucun effet.
Je ne suis pas d'accord avec l'utilisation de Java.net.Proxy
.
Que se passe-t-il si vous devez le changer? Nouvelle construction, nouvelle version. La configuration du proxy devrait être facile. Cela fonctionne bien avec les propriétés système ou Tomcat Java_OPTS. Je l'ai utilisé dans les deux sens. Faites juste attention et assurez-vous de savoir quels objets Java_OPTS sont chargés, quel Java est utilisé, etc., car il existe des tomcats qui ont leur propre version Java. En ce qui concerne le post précédent, il n’est pas possible d’utiliser Java avant d’être chargé :). Tomcat ne peut donc pas l'utiliser avant que les propriétés système ne soient utilisées ... uniquement si Tomcat utilise un autre JRE qui ne lit pas les propriétés système.
Je viens de tester cette configuration:
set "Java_OPTS=%Java_OPTS% -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 "
dans catalina.bat et fonctionne bien.
Lors de la spécification des paramètres de proxy, vous devez définir le nom du serveur proxy comme ci-dessous:
"-Dhttp.proxyHost=proxy.example.com"
Créez un fichier /bin/setenv.sh (pour WINDOWS\bin\setenv.bat):
Java_OPTS="-Dhttp.proxySet=true -Dhttp.proxyHost=<proxy_hostname> -Dhttp.proxyPort=<port_number> -Dhttp.nonProxyHosts=<domain_one>|<domain two> $Java_OPTS"
NOTE: si vous avez déjà setenv.sh/setenv.bat, vous pouvez ajouter une ligne de la commande ci-dessus. Le script de démarrage Tomcat exécute automatiquement le script setenv avant de démarrer une instance Tomcat.
Vous pouvez également implémenter un proxy HTTP, un proxy https et un proxy non http dans Tomcat. Vous devez mettre à jour deux fichiers, à savoir ../bin/Catalina.sh et ../conf/cataliana.properties.
La configuration détaillée et les étapes sont mentionnées ici: http://w3devops.com/add-http-https-proxy-http-non-proxy-jenkins-via-Tomcat-server/
Vous pouvez utiliser la bibliothèque jProxyLoader. À l'aide de cette bibliothèque, vous pouvez configurer Tomcat pour utiliser le proxy uniquement pour les connexions à un hôte spécifique. Dans votre cas, vous pouvez configurer Tomcat pour qu'il utilise un proxy uniquement pour les connexions à l'hôte servant le service Web (toutes les autres connexions seront gérées par Tomcat de manière "normale" - sans proxy).
La configuration complète est expliquée sur le site Web du projet: http://jproxyloader.sourceforge.net/examples/web-application-on-Tomcat.html