Axis HTTP Vs Axis HTTPS代理设置

时间:2013-02-26 19:53:38

标签: java web-services proxy axis proxy-classes

部署在Weblogic Cluster上的My Java应用程序调用两个Web服务,如下所示。

•通过HTTPS将SOAP客户端请求发送到Internet上的外部应用程序。(通过Axis 1.4创建的Java类)

•此后它通过HTTP将SOAP客户端请求发送到内部应用程序(存在于连接到我的LAN的另一个节点上)。(通过JAX-WS创建的Java类:Jdeveloper向导)

为了达到第一个WS,我必须使用以下代码为Web服务客户端设置https代理设置:

System.setProperty("https.proxyHost", myProxyIP);  
System.setProperty("https.proxyPort", myProxyPort);  

而第二个Web服务不需要此代理设置,因为它们已在网络上可访问。

我的问题如下:

如果我调用第一个服务(具有代理设置的服务),然后调用另一个服务,则Axis客户端尝试使用相同的代理设置调用这些服务,即使我从系统属性中删除了代理设置在我准备通过编写

来介绍2ns WS之前
 System.setProperty("http.proxySet", "false");  
    System.getProperties().remove("http.proxyHost");  
    System.getProperties().remove("http.proxyPort");  
    AxisProperties.setProperty("http.proxyHost", null);  
    AxisProperties.setProperty("http.proxyPort", null);

我读了somwhere使用nonProxyHosts.But我很困惑,如果我应该写

System.setProperty("https.nonProxyHosts","secws.secondwsint.com");

System.setProperty("http.nonProxyHosts","secws.secondwsint.com");

http ot https,因为需要绕过的是HTTP,我们设置代理的是HTTPS。

我也在博客中读到:

AxisProperties.setProperty("https.proxyHost", "bla1.bla1"); 
AxisProperties.setProperty("https.proxyPort", "8080"); 
AxisProperties.setProperty("https.nonProxyHosts", "secws.secondwsint.com"); 

但是再一次使用https.nonProxyHosts或http.nonProxyHosts

建议在我的java程序System.setPropertyAxisProperties.setProperty中使用哪一个,重要的是我应该使用http ot https来编写该代码行 另外,还有其他选择吗?

1 个答案:

答案 0 :(得分:6)

您可以同时使用两者。但System.setProperty()也会影响VM中其他与HTTP相关的java函数,而AxisProperties仅影响Axis WS客户端。所以我将选择AxisProperties.setProperty()。

Axis problem with http proxy parameters caching mechanism中存在错误。基本上,实现缓存旧的代理设置,并且不读取新设置。因此,即使您使用AxisProperties.setProperty()方法,它仍然无效。我不确定它是否适用于Axis 1.4,因为JIRA不提供受影响的版本号。

我也相信你应该设置http.nonProxyHosts,因为你的内部WS使用HTTP,而不是HTTPS。但在另一篇文章中,你提到你设置了两个并且它不起作用。那还是这样吗?