为什么'java.net.SocketException:jks not found'?

时间:2010-02-26 18:45:27

标签: java java-ee websphere

我将以下VM参数传递给在Websphere 5.1.1 JRE上运行的WS客户端应用程序,一个在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)

我错过了什么吗?

由于

彼得

1 个答案:

答案 0 :(得分:1)

如果您的Linux环境没有安装软件包,那么硬编码字符串com.ibm.net.ssl.internal.www.protocol可能是您遇到问题的原因。您可能需要为已部署的库找到合适的条目,或部署IBM lib。


更新:我发现这个here引用了可能有帮助的IBM VM版本:

  

如果您希望使用HTTPS协议   处理程序,您必须设置属性   java.protocol.handler.pkgs。在1.3.x中,   https协议处理程序是:   com.ibm.net.ssl.internal.www.protocol   在1.4.x中,https协议   处理程序是:   com.ibm.net.ssl.www.protocol。对于   为其设置HTTPS处理程序的示例   1.4.x的: