2015-01-20 92 views
2

我有一個應用程序,其中的一些環境相關的原因,我需要通過我自己的securesocketfactory。我通過了Axis 1.4 documentation。基於此,我嘗試以多種方式設置自己的價值。全部列在下面。Axis 1.4 pass自定義SecureSocketFactory

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可能會顯示。任何幫助深表感謝。

回答

2

我發現我錯了。我不得不簡單地通過

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

我傳遞了錯誤的值。

感謝

1

當你有你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);