Tomcat和代理设置

时间:2012-09-06 23:24:59

标签: java-ee tomcat proxy tomcat7

在tomcat7上运行一个servlet,它向第三方网站发出web服务调用。 该调用从Windows机器运行良好,但从tomcat运行时失败。 Wont Tomcat会自动使用Windows的代理设置吗? 我添加了

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 和

http.proxyHost=IP
http.proxyPort=8080

到catalina.properties 但仍然没有变化。 我们如何设置Tomcat使用windows的代理设置,有没有办法检查tomcat是否正在获取指定的代理设置?

6 个答案:

答案 0 :(得分:22)

我不同意java.net.Proxy的用法。

如果您需要更改,会发生什么?新版本,新版本。代理的设置应该很容易。它适用于系统属性或tomcat JAVA_OPTS。我用两种方式使用它。请注意并确保您知道JAVA_OPTS的加载内容,使用的是什么等等,因为有些tomcats拥有自己的java版本。注意上一篇文章,加载之前没有办法可以使用java :)。因此,只有在tomcat使用另一个不读取系统属性的JRE时,Tomcat才能在使用系统属性之前使用它。

我只测试这个设置:

set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 "

在catalina.bat中运作良好。

答案 1 :(得分:5)

在指定代理设置时,您必须定义代理服务器名称,如下所示:

"-Dhttp.proxyHost=proxy.example.com"

答案 2 :(得分:2)

创建/bin/setenv.sh(对于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"

注意:如果您已经有setenv.sh/setenv.bat,则可以添加一行上述命令。在启动tomcat实例之前,Tomcat启动脚本会自动运行setenv脚本。

答案 3 :(得分:2)

您也可以在Tomcat中实现HTTP代理,HTTPS代理和HTTP / HTTPS非代理主机。您需要更新两个文件,即bin/Catalina.shconf/catalina.properties

答案 4 :(得分:1)

不,Tomcat不会自动使用系统代理设置。

我建议您查看java.net.Proxy提供的设施。这允许您在运行时动态指定代理。系统属性可以工作,但它们只读一次,如果Tomcat在设置之前已经使用HttpURLConnection用于它自己的目的,那么设置就没有效果了。

答案 5 :(得分:0)

您可以使用jProxyLoader库。使用此lib,您可以将Tomcat配置为仅将代理用于与特定主机的连接。在您的情况下,您可以将Tomcat配置为仅通过代理连接到服务于Web服务的主机(所有其他连接将由Tomcat处理&#34;正常&#34;方式 - 无代理)。

项目网站上解释了完整设置:http://jproxyloader.sourceforge.net/examples/web-application-on-tomcat.html