Axis 1.4 通过自定义 SecureSocketFactory
Axis 1.4 pass custom SecureSocketFactory
我有一个应用程序,出于某些与环境相关的原因,我需要传递我自己的 securesocketfactory。我经历了 Axis 1.4 documentation 。基于此,我尝试以多种方式设置我的价值。全部列在下面。
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
class 之前执行此操作。但是在 none 轴连接发生的情况下,它使用了我的套接字工厂。
有没有办法传递我的自定义 SocketFactory?即使我可以通过我的自定义 KeytoreManager,它也能完成这项工作。
我已经无计可施了!我尝试过的选项(如 socketFactory)可能表明了这一点。非常感谢任何帮助。
当您拥有 ServiceClient
实例时,您可以获取选项并设置 属性 供协议处理程序使用:
serviceClient.getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, sslProtocol);
其中一个有点棘手的事情是你不能只使用 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);
我发现了我的错误。我必须简单地通过
System.setProperty("org.apache.axis.components.net.SocketFactory", "com.package.myclass");
System.setProperty("org.apache.axis.components.net.SecureSocketFactory","com.package.myclass");
我传递了错误的值。
谢谢
我有一个应用程序,出于某些与环境相关的原因,我需要传递我自己的 securesocketfactory。我经历了 Axis 1.4 documentation 。基于此,我尝试以多种方式设置我的价值。全部列在下面。
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
class 之前执行此操作。但是在 none 轴连接发生的情况下,它使用了我的套接字工厂。
有没有办法传递我的自定义 SocketFactory?即使我可以通过我的自定义 KeytoreManager,它也能完成这项工作。
我已经无计可施了!我尝试过的选项(如 socketFactory)可能表明了这一点。非常感谢任何帮助。
当您拥有 ServiceClient
实例时,您可以获取选项并设置 属性 供协议处理程序使用:
serviceClient.getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, sslProtocol);
其中一个有点棘手的事情是你不能只使用 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);
我发现了我的错误。我必须简单地通过
System.setProperty("org.apache.axis.components.net.SocketFactory", "com.package.myclass");
System.setProperty("org.apache.axis.components.net.SecureSocketFactory","com.package.myclass");
我传递了错误的值。
谢谢