提问人:Marco Bernal 提问时间:10/17/2023 更新时间:10/18/2023 访问量:52
发生以下 WSDL 异常: WSDLException: faultCode=WSDL4JWrapper
The following WSDL exception occurred: WSDLException: faultCode=WSDL4JWrapper
问:
我正在尝试连接到 Java 应用程序上的 webService。我为证书创建了自己的 .jks 文件。 当我在本地(是 tomcat 服务器)中部署应用程序时,应用程序没问题。但是当我在 Websphere 服务器上部署它时,我遇到了这个错误:
The following WSDL exception occurred: WSDLException: faultCode=WSDL4JWrapper : : javax.wsdl.WSDLException: WSDLException: faultCode=WSDL4JWrapper : : javax.net.ssl.SSLException: SSLSocketFactory is null. This can occur if javax.net.ssl.SSLSocketFactory.getDefault() is called to create a socket and javax.net.ssl.* properties are not set.
我以这种方式设置属性:
System.setProperty("javax.net.ssl.trustStore", this.util.getPropertie("trustStore"));
System.setProperty("javax.net.ssl.trustStorePassword", this.util.getPropertie("trustStorePassword"));
System.setProperty( "javax.net.ssl.keyStore", this.util.getPropertie("keyStore"));
System.setProperty( "javax.net.ssl.keyStorePassword", this.util.getPropertie("keyStorePassword"));
我从 .properties 文件中获取属性。
提前致谢。如果我没有正确回答我的问题,我深表歉意,但这是我第一次在这里写信。
问候。
我正在尝试将我的 Web 应用程序连接到 Web 服务
答:
在 WAS 传统中,您在管理控制台中定义的 SSL 配置由称为 SSLSocketFactory 的类在运行时应用。WebSphere 有自己的自定义 SSLSocketFactory 实现 (com.ibm.websphere.ssl.protocol.SSLSocketFactory),它将其设置为它所位于其之上的 IBM Java 运行时的缺省值。当应用程序代码调用使用此 SSLSocketFactory 进行连接的 API 时,WAS SSL 设置将应用于连接,并且可以通过在 WAS 管理控制台中更改 SSL 配置来解决连接的任何问题(例如,协议不匹配、密码套件不匹配或证书信任问题)。
在此处输入图像描述假设您在代码中显式使用系统属性,而不是依赖于为 JVM 配置的缺省设置(在典型场景中,JVM 是 WebSphere Application Server (WAS) 实现)。在这种情况下,它可能会绕过 WAS SSL 配置,包括密钥库、信任库、密码套件和握手协议等设置。
如果选择覆盖 WAS SSL 设置,请确保包含密钥库类型和信任库类型的系统属性,这些属性设置如下:
javax.net.ssl.trustStoreType
javax.net.ssl.keyStoreType
这两个属性都应设置为 JKS。
如果您有任何其他问题或需要 WAS SSL 的其他帮助,请随时联系 IBM Websphere 技术支持。
评论