【问题标题】:WSWS4104E: SOAP 1.2 protocol not supported by SAAJ 1.2WSWS4104E: SAAJ 1.2 不支持 SOAP 1.2 协议
【发布时间】:2016-03-16 11:41:25
【问题描述】:

我在一个独立的应用程序中有一个 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 jax-ws websphere-8 saaj


    【解决方案1】:

    经过一番努力,我终于明白发生了什么:

    当使用 SOAP 1.2 时,瘦客户端会尝试确定 SAAJ 1.3 是否可用。

    com.ibm.ws.webservices.engine.xmlsoap.Utils
    
        private static final boolean isSAAJ13Available = discoverSAAJ13Availability();
    

    discoverSAAJ13Availability() 最终尝试加载不在类路径中的com.ibm.ws.webservices.engine.xmlsoap.saaj13only.SOAPDynamicConstants,并最终引发异常。

    要解决它,您还必须添加包含该类的 jar:com.ibm.jaxws.thinclient_8.0.0.jar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2021-05-14
      • 2016-10-14
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多