11

在 tomcat7 上运行了一个 servlet,它对第三方网站进行 web 服务调用。该调用在 Windows 机器上运行良好,但从 tomcat 运行时失败。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 是否正在获取指定的代理设置?

4

6 回答 6

32

我不同意java.net.Proxy.

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

我只是测试这个设置:

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

在 catalina.bat 中运行良好。

于 2013-01-22T08:41:53.663 回答
5

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

"-Dhttp.proxyHost=proxy.example.com"
于 2012-11-23T08:07:19.343 回答
3

创建 /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 脚本。

于 2016-02-16T22:01:44.317 回答
3

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

于 2016-07-04T07:22:03.897 回答
2

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

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

于 2012-09-07T12:16:53.970 回答
1

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

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

于 2014-08-04T08:23:11.943 回答