Почему java.net.SocketException: jks не найден? - PullRequest
1 голос
/ 26 февраля 2010

Я передаю следующие аргументы виртуальной машины клиентскому приложению WS, которое работает на JRE Websphere 5.1.1, одно в Windows XP и одно в Linux, но имеет другое поведение

-Djavax.net.ssl.keyStore=./key.jks 
-Djavax.net.ssl.keyStorePassword=abc 
-Djavax.net.ssl.trustStore=./key.jks 
-Djavax.net.ssl.trust=abc 
-Djavax.net.ssl.trustStorePassword=abc 
-Djava.protocol.handler.pkgs=com.ibm.net.ssl.internal.www.protocol 
-Djavax.net.ssl.trustStoreType=JKS 
-DtraceSettingsFile=trace.log

В Windows все работает нормально, но в Linux я получаю исключение именно там, где клиент WS должен открыть соединение:

java.net.SocketException: jks not found
    at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source)
    at com.ibm.ws.webservices.engine.components.net.JSSESocketFactory.create(JSSESocketFactory.java:207)
    at com.ibm.ws.webservices.engine.transport.http.HTTP11Sender$5.run(HTTP11Sender.java:1789)
    at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:111)
    at com.ibm.ws.webservices.engine.transport.http.HTTP11Sender$SocketPoolFactory.obtainSocket(HTTP11Sender.java:1781)
    at com.ibm.ws.webservices.engine.transport.http.HTTP11Sender.invoke(HTTP11Sender.java:185)
    at com.ibm.ws.webservices.engine.transport.http.HTTPSender.invoke(HTTPSender.java:87)
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:212)
    at com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:255)

Я что-то упустил?

Спасибо

Peter

1 Ответ

1 голос
/ 26 февраля 2010

Эта жестко запрограммированная строка com.ibm.net.ssl.internal.www.protocol может быть причиной вашей проблемы, если в вашей среде Linux не установлен пакет. Возможно, вам потребуется найти подходящую запись для любых развернутых вами библиотек или развернуть библиотеку IBM.


Обновление: я нашел это здесь со ссылкой на версии IBM VM, которые могут помочь:

Если вы хотите использовать протокол HTTPS обработчик, вы должны установить свойство java.protocol.handler.pkgs. В 1.3.х, обработчик протокола https: com.ibm.net.ssl.internal.www.protocol и в 1.4.x протокол https Обработчик: com.ibm.net.ssl.www.protocol. За пример установки обработчика HTTPS для 1.4.x:

...