3

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

• 它通过 HTTPS 向 Internet 上的外部应用程序发送 SOAP 客户端请求。(通过 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 客户端尝试使用相同的代理设置调用这些服务,即使我在我之前从系统属性中删除了代理设置即将通过写来inoke 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。但我很困惑是否应该写

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.setProperty或者AxisProperties.setProperty重要的是,我应该使用 http ot https 来编写该代码行此外,还有其他选择吗?

4

1 回答 1

5

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

http 代理参数缓存机制的 Axis问题存在一个错误。基本上,该实现缓存旧的代理设置并且不读取新设置。所以即使你使用AxisProperties.setProperty()方法,它仍然不起作用。我不确定它是否适用于 Axis 1.4,因为 JIRA 不提供受影响的版本号。

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

于 2013-02-26T21:20:31.637 回答