Use message style.
On Wed, 16 Mar 2005 09:47:51 -0600, BALDWIN, ALAN J [AG-Contractor/1000] <[EMAIL PROTECTED]> wrote: > I actually took out the static wsdl after the first post. The wsdl below is > generated by Axis. As for RC2, I had included the old jar file. I just > updated the jars, and it didn't fix anything. > > What I really want to do is turn off the xml-->java binding, and get at the > xml myself. This service will really only need to validate the xml data and > forward it. > > Does anyone have any experience with turning off binding? > > Thanks again, > > -Alan- > > -----Original Message----- > From: Dino Chiesa [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 15, 2005 5:57 PM > To: [email protected] > Subject: RE: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element... > > Ps: you originally said you were using AXIS 1.2RC3, > But that WSDL doc (which I still cannot parse) > says it was generated by AXIS 1.2RC2. > > ?? > > Seems like in your WSDD you are specifying a static WSDL? Is that > right? > Then there is nothing guaranteeing that the static WSDL you are serving > actually conforms to what your code is expecting. > > The static WSDL file could have a picture of tweety bird in it, but that > doesn't mean your MessageService actually implements the tweety bird > contract. > > -Dino > > -----Original Message----- > From: BALDWIN, ALAN J [AG-Contractor/1000] > [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 15, 2005 5:40 PM > To: '[email protected]' > Subject: RE: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element... > > Actually, that WSDL validated in the eclipse plugin... I was including > an external wsdl into the wsdd file so that axis would not generate one > for me. I have determined that is not the problem. > > Here is what is happening now (I've been dealing with this issue for a > while): I have a "PurchaseOrder" java bean with a "description" field > on it. > > Again, I'm using document/literal. > > If the soap message looks like this, it works: > > <SOAP-ENV:Body> > <echoMessage> > <description>test...</description> > </echoMessage> > <SOAP-ENV:Body> > > This does NOT work: > > <SOAP-ENV:Body> > <echoMessage> > <PurchaseOrder> > <description>test...</description> > <PurchaseOrder> > </echoMessage> > <SOAP-ENV:Body> > > When I put the PurchaseOrder node in, it breaks. This is just a proof > of concept service, but when we implement, I will need the root node in > there to validate against an industry standard schema. In this case, > I'm just using PurchaseOrder. > > Any ideas? Thanks for the reply. > > Here is the WSDL: (copied from the running service, auto-generated from > axis) > > <wsdl:definitions > targetNamespace="http://localhost:8080/poc-axis-server/services/MessageS > ervice"> > > <!-- > WSDL created by Apache Axis version: 1.2RC2 Built on Nov 16, 2004 > (12:19:44 EST) > --> > > <wsdl:types> > > <schema elementFormDefault="qualified" > targetNamespace="http://localhost:8080/poc-axis-server/services/MessageS > ervice"> > <complexType name="purchaseOrder"> > <sequence> > <element name="description" nillable="true" > type="xsd:string"/> > </sequence> > </complexType> > > <element name="echoMessageReturn" type="xsd:string"/> > > </schema> > > <schema elementFormDefault="qualified" > targetNamespace="http://server.web.services.farmsource.com"> > <import > namespace="http://localhost:8080/poc-axis-server/services/MessageService > "/> > <element name="po" type="impl:purchaseOrder"/> </schema> > </wsdl:types> > > <wsdl:message name="echoMessageResponse"> > <wsdl:part element="impl:echoMessageReturn" > name="echoMessageReturn"/> > </wsdl:message> > > <wsdl:message name="echoMessageRequest"> > <wsdl:part element="tns1:po" name="po"/> > </wsdl:message> > > <wsdl:portType name="JaxRpcMessageService"> > > <wsdl:operation name="echoMessage" parameterOrder="po"> > <wsdl:input message="impl:echoMessageRequest" > name="echoMessageRequest"/> > <wsdl:output message="impl:echoMessageResponse" > name="echoMessageResponse"/> > </wsdl:operation> > > </wsdl:portType> > > <wsdl:binding name="MessageServiceSoapBinding" > type="impl:JaxRpcMessageService"> > <wsdlsoap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > > <wsdl:operation name="echoMessage"> > <wsdlsoap:operation soapAction=""/> > > <wsdl:input name="echoMessageRequest"> > <wsdlsoap:body use="literal"/> > </wsdl:input> > > <wsdl:output name="echoMessageResponse"> > <wsdlsoap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > > <wsdl:service name="JaxRpcMessageServiceService"> > <wsdl:port binding="impl:MessageServiceSoapBinding" > name="MessageService"> > <wsdlsoap:address > location="http://localhost:8080/poc-axis-server/services/MessageService" > /> > </wsdl:port> > </wsdl:service> > > </wsdl:definitions> > > -----Original Message----- > From: Dino Chiesa [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 15, 2005 4:24 PM > To: [email protected] > Subject: RE: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element... > > It looks like a disagreement in XML namespace. > > The echoMessage in the wsdl appears to be in a particular namespace, > whereas the VB6 client is sending a message in no namespace at all. > > <echoMessage> > <PurchaseOrder> > <description>string</description> > </PurchaseOrder> > </echoMessage> > > The WSDL you sent isn't a real wsdl. It is missing a bunch of stuff? > So it is hard to say whether what I wrote above is right. > > -----Original Message----- > From: BALDWIN, ALAN J [AG-Contractor/1000] > [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 15, 2005 5:03 PM > To: '[email protected]' > Subject: RE: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element... > > Here is the response I'm getting, if this helps. I've seen several > people having this problem on the web, but nobody seems to have posted > any fixes. > > <soapenv:Fault > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <faultcode>soapenv:Server.userException</faultcode> > <faultstring>org.xml.sax.SAXException: SimpleDeserializer > encountered a child element, which is NOT expected, in something it was > trying to deserialize.</faultstring> > <detail> > <ns1:hostname > xmlns:ns1="http://xml.apache.org/axis/">LCEVER</ns1:hostname> > </detail> > </soapenv:Fault> > > Thanks, > > -Alan Baldwin- > > -----Original Message----- > From: BALDWIN, ALAN J [AG-Contractor/1000] > [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 15, 2005 2:56 PM > To: '[email protected]' > Subject: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element... > > Hi all, I'm having an issue with Apache Axis 1.2 RC3. It is running on > Tomcat 5.0.28. The error I'm getting is "org.xml.sax.SAXException: > SimpleDeserializer encountered a child element, which is NOT expected, > in something it was trying to deserialize". I've tried tweaking the > schema and wsdl but to no avail. Nothing I do seems to get rid of this > error. I'm using a document/literal approach, as you will note below. > Is this a schema validation problem? I have downloaded the axis source, > but I haven't dug *too* deeply into it. > > Can anyone help me? > > Thanks a lot, > > Alan Baldwin > > Stack trace: > > Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a > child element, which is NOT expected, in something it was trying to > deserialize. > at > org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeser > ializer.java:143) > at > org.apache.axis.encoding.DeserializationContext.startElement(Deserializa > tionContext.java:1031) > at > org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: > 165) > at > org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j > ava:1140) > at > org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238) > at > org.apache.axis.message.RPCElement.getParams(RPCElement.java:386) > at > org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.ja > va:148) > at > org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319 > ) > > Here is my soap message (vb6 client): > > <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" > xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" > xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> > <SOAP-ENV:Body> > <echoMessage> > <PurchaseOrder> > <description>test</description> > </PurchaseOrder> > </echoMessage> > </SOAP-ENV:Body> > <SOAP-ENV:Envelope> > > Here is my wsdl: > > <wsdl:definitions > targetNamespace="http://localhost:8080/poc-axis-server/services/MessageS > ervice"> > > <wsdl:types> > > <xs:schema attributeFormDefault="unqualified" > elementFormDefault="qualified"> > <xs:element name="echoMessage"> > <xs:complexType> > <xs:sequence> > <xs:element ref="PurchaseOrder"/> > </xs:sequence> > </xs:complexType> > </xs:element> > > <xs:element name="PurchaseOrder"> > <xs:complexType> > <xs:sequence> > <xs:element name="description" > type="xs:string"/> > </xs:sequence> > </xs:complexType> > </xs:element> > </xs:schema> > > </wsdl:types> > > <wsdl:message name="echoMessageResponse"> <wsdl:part > element="impl:echoMessageReturn" name="echoMessageReturn"/> > </wsdl:message> > > <wsdl:message name="echoMessageRequest"> <wsdl:part > element="impl:echoMessage" name="echoMessage"/> </wsdl:message> > > <wsdl:portType name="JaxRpcMessageService"> > > <wsdl:operation name="echoMessage"> > <wsdl:input message="echoMessageRequest"/> <wsdl:output > message="echoMessageResponse"/> </wsdl:operation> </wsdl:portType> > > <wsdl:binding name="MessageServiceSoapBinding" > type="impl:JaxRpcMessageService"> <wsdlsoap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > > <wsdl:operation name="echoMessage"> > <wsdlsoap:operation soapAction=""/> > > <wsdl:input> > <wsdlsoap:body use="literal"/> > </wsdl:input> > > <wsdl:output> > <wsdlsoap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > > <wsdl:service name="JaxRpcMessageServiceService"> > > <wsdl:port binding="impl:MessageServiceSoapBinding" > name="MessageService"> <wsdlsoap:address > location="http://localhost:8080/poc-axis-server/services/MessageService" > /> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > Here is my WSDD: > > ...snip... > > <service name="MessageService" style="document" use="literal" > provider="java:RPC"> > <requestFlow> > <handler type="soapmonitor"/> > </requestFlow> > <responseFlow> > <handler type="soapmonitor"/> > </responseFlow> > <parameter name="allowedMethods" value="*"/> > <parameter name="className" > value="com.farmsource.services.web.server.JaxRpcMessageService"/> > > <wsdlFile>PurchaseOrder.wsdl</wsdlFile> > > </service> > > ../snip.... > > Here is my Java code: > > public class JaxRpcMessageService extends ServletEndpointSupport > implements > RemoteMessageService, MessageService { > > protected final Log logger = LogFactory.getLog(getClass()); > > private MessageService messageService; > > //this is from a spring context. this is working fine. > protected void onInit() throws ServiceException { > messageService = (MessageService) > getWebApplicationContext().getBean( > "messageService"); > logger.info("Service implementation (from application context):" > + messageService.getClass()); > } > > public String echoMessage(SOAPElement po) { > logger.info("Retrieving broadcast message from local service"); > return messageService.echoMessage(po); > } > > } > >
