Tomcat和代理设置

ice*_*dek 9 proxy tomcat java-ee 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"
Run Code Online (Sandbox Code Playgroud)

到CATALINA.BAT和

http.proxyHost=IP
http.proxyPort=8080
Run Code Online (Sandbox Code Playgroud)

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

小智 23

我不同意使用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 "
Run Code Online (Sandbox Code Playgroud)

在catalina.bat并运作良好.

  • 在我看来最好的解决方案. (3认同)

Sat*_*esh 5

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

"-Dhttp.proxyHost=proxy.example.com"
Run Code Online (Sandbox Code Playgroud)


use*_*421 2

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

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