我有一个使用spring-ws的Spring应用程序,我的所有SOAP消息在本地开发机器上都能正常工作。当我部署到需要使用代理才能使任何流量到达外界的服务器时,我似乎被卡住了。我的印象是可以设置一些JVM参数,例如

-Dhttp.proxyHost=proxyhostURL
-Dhttp.proxyPort=proxyPortNumber
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword


但是类文件似乎并没有使用proxyUser和proxyPassword参数。

我什至更进一步,并在Java代码本身中实现了它:

System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
System.getProperties().put("http.proxyUser", "someUserName");
System.getProperties().put("http.proxyPassword", "somePassword");


但是仍然没有运气。

然后,我尝试使用java.net.Authenticator设置用户名和密码,但这似乎也不起作用:

Authenticator.setDefault(
                  new Authenticator() {
                    public PasswordAuthentication getPasswordAuthentication() {
                      return new PasswordAuthentication(authUser, authPassword.toCharArray());
                    }
                  }
                );


有没有人对如何使用Java6,Tomcat 6和Spring 3(带有spring-ws)通过代理路由所有流量有任何建议?

最佳答案

事实证明,由于我的Web服务正在使用HTTPS,因此不兑现传入的JVM HTTP参数。将标志设置为以下内容之后:

-Dhttps.proxyHost=proxyhostURL
-Dhttps.proxyPort=proxyPortNumber
-Dhttps.proxyUser=someUserName
-Dhttps.proxyPassword=somePassword


所有工作均按计划进行。

09-10 12:39
查看更多