2016-03-16 2 views
0

Я клиент JAXWS в отдельном приложении, которое бросает:WSWS4104E: SOAP 1.2 протокола не поддерживается SAAJ 1.2

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) 

Я добавил следующую банку 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.

Это сводит меня с ума, любая идея, почему это не работает?

ответ

1

После strugging с этим я, наконец, понял, что происходит:

при использовании 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, который не находится на пути к классам и, наконец, вызывает исключение.

Для его решения вам также необходимо добавить банку, которая содержит этот класс: com.ibm.jaxws.thinclient_8.0.0.jar.