java - Axis HTTP 与 Axis HTTPS 代理设置

标签 java web-services proxy axis proxy-classes

我部署在 Weblogic 集群上的 Java 应用程序调用了如下两个 Web 服务。

• 它通过 HTTPS 向互联网上的外部应用程序发送 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 客户端会尝试使用相同的代理设置调用这些服务,即使我只是从系统属性中删除了代理设置在我即将通过编写

来启动 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.setPropertyAxisProperties.setProperty 中使用哪个,重要的是我应该使用 http 还是 https 来编写该代码行 另外,还有其他选择吗?

最佳答案

您可以同时使用两者。但是 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。但是在另一篇文章中,您提到您同时设置了两者,但它不起作用。现在还是这样吗?

关于java - Axis HTTP 与 Axis HTTPS 代理设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098044/

相关文章:

java - 使用 Lambda 将列表项返回为字符串

c++ - 编写简单的 WSO2/C++ Web 服务客户端时崩溃

c# - 通过代理服务器从 C#/.NET 调用 Twilio API

java - 在 Web 服务器上代表 Java 中的用户使用 google api

java - 在 Spring Boot RequestMapping 中添加方法

web-services - Weblogic Web 服务 + SSL

C# SOAP 调用不断返回 500 错误

Python 代理支持通过与错误代理的本地连接

proxy - 使用 Fiddler 连接带有授权的 HTTP 代理

java - CompletableFuture 的完成处理程序在哪个线程中执行?