Передача XML в веб-сервис jax rpc - PullRequest
0 голосов
/ 18 марта 2012

У меня есть веб-сервис jax-rpc. Когда я пытаюсь передать XML в веб-сервис, возникает следующая ошибка:

[3/18/12 4:26:27:947 IST] 0000002b WebServicesSe E     com.ibm.ws.webservices.engine.transport.http.WebServicesServlet doPost WSWS3227E:  Error:     Exception:
                                 WebServicesFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultString: org.xml.sax.SAXException: WSWS3084E: Error: SimpleDeserializer     encountered a child element, which is NOT expected, in something it was trying to  deserialize. Message being parsed: 
 faultActor: null
 faultDetail: 

org.xml.sax.SAXException: WSWS3084E: Error: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. Message being parsed: 
at com.ibm.ws.webservices.engine.WebServicesFault.makeFault(WebServicesFault.java:298)
at com.ibm.ws.webservices.engine.SOAPPart._getSOAPEnvelope(SOAPPart.java:1090)
at com.ibm.ws.webservices.engine.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:628)
at com.ibm.ws.webservices.engine.SOAPPart.getEnvelope(SOAPPart.java:656)
at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCHandlerChain.handleRequest(JAXRPCHandlerChain.java:301)
at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCHandler.invokeServerRequestHandler(JAXRPCHandler.java:506)
at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCHandler$1.invoke(JAXRPCHandler.java:380)
at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:209)
at com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:336)
at com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.doPost(WebServicesServlet.java:908)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at com.ibm.ws.webservices.engine.transport.http.WebServicesServletBase.service(WebServicesServletBase.java:344)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1443)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:790)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3610)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:274)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:926)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1557)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:173)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)

Подобная ошибка описана здесь

Может ли веб-служба jax-ws использовать вызов типа rpc и получать необработанный xml?

но в предыдущем посте необработанный xml основан на схемах, используемых веб-сервисом. Здесь нет конкретной схемы, используемой входными данными.

Файл WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://service.session.plh"     xmlns:impl="http://service.session.plh" xmlns:intf="http://service.session.plh" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <wsdl:types>
 <schema targetNamespace="http://service.session.plh" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <element name="AddPatientResponse">
 <complexType>
  <sequence>
  <element name="AddPatientReturn" nillable="true" type="xsd:string"/>
  </sequence>
 </complexType>
 </element>
 <element name="AddPatient">
 <complexType>
 <sequence>
  <element name="patientform" nillable="true" type="xsd:string"/>
 </sequence>
 </complexType>
 </element>
 </schema>
</wsdl:types>

<wsdl:message name="AddPatientRequest">
 <wsdl:part element="impl:AddPatient" name="parameters">
 </wsdl:part>

</wsdl:message>

<wsdl:message name="AddPatientResponse">
 <wsdl:part element="impl:AddPatientResponse" name="parameters">
</wsdl:part>

</wsdl:message>

<wsdl:portType name="StaffBean">
 <wsdl:operation name="AddPatient">
   <wsdl:input message="impl:AddPatientRequest" name="AddPatientRequest">
</wsdl:input>

   <wsdl:output message="impl:AddPatientResponse" name="AddPatientResponse">
</wsdl:output>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="StaffSoapBinding" type="impl:StaffBean">
<wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"/>
 <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
 <wsdl:operation name="AddPatient">
   <wsdlsoap:operation soapAction="AddPatient"/>
   <wsdl:input name="AddPatientRequest">
     <wsdlsoap:body use="literal"/>
   </wsdl:input>
   <wsdl:output name="AddPatientResponse">
     <wsdlsoap:body use="literal"/>
  </wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StaffService">
 <wsdl:port binding="impl:StaffSoapBinding" name="Staff">
   <wsdlsoap:address location="http://localhost:9080/PLHospitalService/services/Staff"/>
 </wsdl:port>
</wsdl:service>
</wsdl:definitions>

Заранее благодарим за любую помощь, которую вы можете оказать. Просьба ответить как можно скорее. Буду голосовать за любой ответ.

1 Ответ

1 голос
/ 28 марта 2012

Не могли бы вы предоставить SOAP-запрос, с которым вы звоните в службу?

Ожидаемая XML-структура запроса не соответствует структуре WSDL.

...