2

我有一个应用程序,由于某些与环境相关的原因,我需要通过我自己的securesocketfactory。我浏览了Axis 1.4 文档 。基于此,我尝试以多种方式设置我的价值。下面都列出来了。

System.setProperty("org.apache.axis.components.net.SocketFactory", CustomSocketFactory.class.toString());
System.setProperty("org.apache.axis.components.net.SecureSocketFactory",CustomSocketFactory.class.toString());
System.setProperty("axis.socketFactory",CustomSocketFactory.class.toString());
System.setProperty("axis.socketSecureFactory",CustomSocketFactory.class.toString());
AxisProperties.setProperty("axis.socketSecureFactory", CustomSocketFactory.class.toString());
AxisProperties.setProperty("axis.socketFactory", CustomSocketFactory.class.toString());
AxisProperties.setProperty("org.apache.axis.components.net.SecureSocketFactory", CustomSocketFactory.class.toString());
AxisProperties.setProperty("org.apache.axis.components.net.SocketFactory", CustomSocketFactory.class.toString());

我在我的Locator课程被实例化之前这样做。但是在发生轴连接的情况下,它都没有使用我的套接字工厂。

有没有办法通过我的自定义 SocketFactory?即使我可以通过我的自定义 KeytoreManager,它也可以完成这项工作。

我束手无策!我尝试过的选项(如 socketFactory)可能会表明这一点。任何帮助深表感谢。

4

2 回答 2

4

我发现了我的错误。我不得不简单地通过

System.setProperty("org.apache.axis.components.net.SocketFactory", "com.package.myclass");
System.setProperty("org.apache.axis.components.net.SecureSocketFactory","com.package.myclass");

我传递了错误的值。

谢谢

于 2015-01-27T14:06:48.970 回答
0

拥有ServiceClient实例后,您可以获得选项并设置协议处理程序使用的属性:

serviceClient.getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, sslProtocol);

一个有点棘手的事情是你不能只使用 a SSLSocketFactory,你必须提供一个org.apache.commons.httpclient.protocol.ProtocolSocketFactory,它定义了更多的方法。

您还可以选择创建自己的 HTTPClient 实例并填充:

serviceClient.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
serviceClient.getOptions().setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
于 2015-01-20T19:59:33.360 回答