2015-01-20 2 views
2

У меня есть приложение, где по каким-то причинам, связанным с окружающей средой, мне нужно передать свой собственный securesocketfactory. Я прошел через Axis 1.4 documentation. Исходя из этого, я попытался установить свою ценность несколькими способами. Все перечисленные ниже.Axis 1.4 pass custom 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, он выполнит эту работу.

Am at my wits end! Параметры, которые я пробовал как 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); 
Смежные вопросы