我将以下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)
我错过了什么吗?
由于
彼得
答案 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的: