WSWS4104E: SAAJ 1.2 不支持 SOAP 1.2 协议
WSWS4104E: SOAP 1.2 protocol not supported by SAAJ 1.2
我在独立应用程序中有一个 JAXWS 客户端,它正在抛出:
Caused by: java.lang.UnsupportedOperationException: WSWS4104E: SOAP 1.2 Protocol is not supported by SAAJ 1.2.
at com.ibm.ws.webservices.engine.xmlsoap.SOAPFactory.setSOAPConstants(SOAPFactory.java:143)
at com.ibm.ws.webservices.engine.xmlsoap.SOAPFactory.<init>(SOAPFactory.java:111)
at com.ibm.ws.webservices.engine.soap.SAAJMetaFactoryImpl.newSOAPFactory(SAAJMetaFactoryImpl.java:68)
at javax.xml.soap.SOAPFactory.newInstance(SOAPFactory.java:297)
at com.sun.xml.internal.ws.api.SOAPVersion.<init>(SOAPVersion.java:176)
at com.sun.xml.internal.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:94)
我添加了以下 jar com.ibm.jaxws.thinclient_8.0.0.jar 但仍然抛出相同的错误。
还尝试添加这些依赖项:
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.3.25</version>
</dependency>
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>saaj-api</artifactId>
<version>1.3.5</version>
</dependency>
甚至 运行 在 Oracle JDK 1.8 和 IBM JDK 1.7 下。
这让我抓狂,知道为什么它不起作用吗?
经过一番折腾,我终于明白是怎么回事了:
使用 SOAP 1.2 时,瘦客户端会尝试确定 SAAJ 1.3 是否可用。
com.ibm.ws.webservices.engine.xmlsoap.Utils
private static final boolean isSAAJ13Available = discoverSAAJ13Availability();
discoverSAAJ13Availability()
最终尝试加载不在 class 路径上的 com.ibm.ws.webservices.engine.xmlsoap.saaj13only.SOAPDynamicConstants
并最终引发异常。
要解决它,您还必须添加包含 class 的 jar:com.ibm.jaxws.thinclient_8.0.0.jar
。
我在独立应用程序中有一个 JAXWS 客户端,它正在抛出:
Caused by: java.lang.UnsupportedOperationException: WSWS4104E: SOAP 1.2 Protocol is not supported by SAAJ 1.2.
at com.ibm.ws.webservices.engine.xmlsoap.SOAPFactory.setSOAPConstants(SOAPFactory.java:143)
at com.ibm.ws.webservices.engine.xmlsoap.SOAPFactory.<init>(SOAPFactory.java:111)
at com.ibm.ws.webservices.engine.soap.SAAJMetaFactoryImpl.newSOAPFactory(SAAJMetaFactoryImpl.java:68)
at javax.xml.soap.SOAPFactory.newInstance(SOAPFactory.java:297)
at com.sun.xml.internal.ws.api.SOAPVersion.<init>(SOAPVersion.java:176)
at com.sun.xml.internal.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:94)
我添加了以下 jar com.ibm.jaxws.thinclient_8.0.0.jar 但仍然抛出相同的错误。
还尝试添加这些依赖项:
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.3.25</version>
</dependency>
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>saaj-api</artifactId>
<version>1.3.5</version>
</dependency>
甚至 运行 在 Oracle JDK 1.8 和 IBM JDK 1.7 下。
这让我抓狂,知道为什么它不起作用吗?
经过一番折腾,我终于明白是怎么回事了:
使用 SOAP 1.2 时,瘦客户端会尝试确定 SAAJ 1.3 是否可用。
com.ibm.ws.webservices.engine.xmlsoap.Utils
private static final boolean isSAAJ13Available = discoverSAAJ13Availability();
discoverSAAJ13Availability()
最终尝试加载不在 class 路径上的 com.ibm.ws.webservices.engine.xmlsoap.saaj13only.SOAPDynamicConstants
并最终引发异常。
要解决它,您还必须添加包含 class 的 jar:com.ibm.jaxws.thinclient_8.0.0.jar
。