1

スローしているスタンドアロンアプリケーションに 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 の下でも動作します。

これは私を夢中にさせています、なぜそれがうまくいかないのですか?

4

1 に答える 1

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.

于 2016-03-17T08:42:41.970 に答える