部署在Weblogic集群上的Java应用程序调用两个are服务,如下所示。
·它通过HTTPS向互联网上的外部应用程序发送SOAP客户端请求。(通过Axis 1.4创建的Java类)
·之后,它通过HTTP将SOAP客户端请求发送到内部应用程序(存在于连接到我的LAN的另一个节点上)。(通过JAX-WS:Jdeveloper向导创建的Java类)
为了访问第一个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);我读到一些使用nonProxyHosts.But的地方,我很困惑,如果我应该写
System.setProperty("https.nonProxyHosts","secws.secondwsint.com");或
System.setProperty("http.nonProxyHosts","secws.secondwsint.com");http或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.setProperty或AxisProperties.setProperty中使用哪一个是明智的,重要的是我是否也应该使用http或https来编写该代码行,还有其他选择吗?
发布于 2013-02-27 05:20:32
您可以同时使用这两种方法。但是System.setProperty()还会影响VM中其他与HTTP相关的java函数,而AxisProperties只会影响Axis WS客户端。因此,我将选择AxisProperties.setProperty()。
基本上,实现会缓存旧的代理设置,而不读取新的设置。所以即使你使用AxisProperties.setProperty()方法,它仍然不起作用。我不确定它是否适用于Axis1.4,因为JIRA不提供受影响的版本号。
现在还是这样吗?
https://stackoverflow.com/questions/15098044
复制相似问题