У меня проблема с вызовом служб из веб-службы.Я не могу понять полученную ниже неустрашимую ошибку.Пожалуйста помоги.Я просмотрел пропущенные сообщения и не знаю, что происходит, потому что описание ошибки очень общее.
Для генерации кода клиента Java из WSDL я использую: wsimport -b binding.xml service.wsdl
где binding.xml:
<bindings xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="http://localhost:8080/services/service?wsdl"
xmlns="http://java.sun.com/xml/ns/jaxws">
<!-- Disable default wrapper style -->
<enableWrapperStyle>false</enableWrapperStyle>
</bindings>
(К сожалению, я не смог присоединить свой WSDL из-за ограничения размера тела сообщения)
Итак, после того как я сгенерировал свойклиент и реализовал звонок в сервис я получил это сообщение об ошибке: javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error:
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156)
at com.sun.proxy.$Proxy151.protocolInsert(Unknown Source)
...
Вот кусок кода:
import javax.xml.ws.BindingProvider;
//other import
public class ProtocolHandler{
....
private ProtocolloServicePortType initServiceProtocol() throws Exception
{
// Init client WS
ProtocolloService invoiceProcolWs = new ProtocolloService();
ProtocolloServicePortType port = invoiceProcolWs.getProtocollo();
BindingProvider bp = (BindingProvider) port;
// Setting endopoint
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, getUrl());
return port;
}
private void createProtocol(){
try{
//Initialize service
ProtocolloServicePortType protocolService = initServiceProtocol();
//Create a request
ProtocolInsertRequest request = prepareRequest();
//Call the method service protocolInsert
ProtocolResponse response = protocolService.protocolInsert(request);
}catch(Exception e){
//manage Exception
}
}
}
Я использую JDK 1.7.0_25, Eclipse Jee Neon.
Мой проект использует несколько библиотек: могут ли эти ошибки быть связаны с проблемой несовместимости?
Существуют jaxbw-plugin-1.0.jar, jaxb-xjc-2.0.jar, jaxb-impl-2.0.jar, jaxb-api-2.0.jar, javaee-api-6.0.jar.
ОБНОВЛЕНИЕ 18/10/2018
Я обнаружил проблему.С SOAPHandler я заметил, что в моем запросе отсутствуют значения даты, когда я оценил их (при отладке я вижу, что в моем запросе каждая дата оценена).
<ns5:protocolInsert xmlns="http://insielmercato.it/protocollo-ws/data/common" xmlns:ns2="http://insielmercato.it/protocollo-ws/data/anagrafic" xmlns:ns3="http://insielmercato.it/protocollo-ws/data/filing" xmlns:ns4="http://insielmercato.it/protocollo-ws/data/protocol" xmlns:ns5="http://insielmercato.it/protocollo-ws/services/protocolloService">
<ns4:user>
<code>USER</code>
<password>PSWD</password>
</ns4:user>
<ns4:operatingOfficeCode>OFFICE</ns4:operatingOfficeCode>
<ns4:officeCode>GEN</ns4:officeCode>
<ns4:registerCode>GEN</ns4:registerCode>
<ns4:direction>A</ns4:direction>
<ns4:sequenceCode>SEQUENCE</ns4:sequenceCode>
<ns4:subjectDocument>Test protocollazione notifica fattura passiva</ns4:subjectDocument>
<ns4:subjectProtocol>PROTOCOLLAZIONE DOC. PROVA000002</ns4:subjectProtocol>
<ns4:receptionSendingDate/>
<ns4:documentDetails>
<number>PROVA000002</number>
<date/>
<year>2018</year>
<documentTypeCode>FAT</documentTypeCode>
</ns4:documentDetails>
<ns4:senderList>
<ns4:sender>
<code>SENDER</code>
</ns4:sender>
</ns4:senderList>
Как видите, теги <ns4:receptionSendingDate/>
и <date/>
(внутри <ns4:documentDetails>
) являются нулевыми, но я оценил их в своих методах.Удаляя эти теги из моего запроса, я обращаюсь к сервису, который работает должным образом без Unmarshalling Error.
Как это возможно?
Спасибо всем за внимание.