我有一个使用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
所有工作均按计划进行。