Mike, if you want to use your own serializer/deserializer try to adapt this tutorial :
http://www-106.ibm.com/developerworks/webservices/library/ws-castor/ They do a data binding with castor. So they need to integrate in their WSDD and the generate stubs Castor serializer/deserializer. Look at what they do. ------------ Sebastien On Fri, 18 Feb 2005 09:30:30 +0900, Bill Keese <[EMAIL PROTECTED]> wrote: > Since you are in wrapped/literal mode shouldn't the encoding style be ""? > Or you could try using <beanMapping> rather than <typeMapping>. Also, the > <msgT> tag looks strange. It seems unnecessary but if you do add then I > think you need a deserializer for that structure too. > > Mike Cassisa wrote: > > > > I am having a problem getting my Deserializer to be used after registering > it's Factory with the typeMapping element in the dd. I have tried many > different combinations but regardless of what I do the SimpleDeserializer is > selected. I believe this is happening because axis is interpreting the > entire message as a String instead of my desired type. I am somewhat new > to axis so any help from those of you who really understand the framework > would be much appreciated. > > > > There have been several similar threads on this with this one being the > closest to my problem, however the solution needs to be on the server not > the client: > > List: axis-user > > Subject: (resolved) RE: deserializing nested complex types > > From: Mitch Gitman <mgitman () usa ! net> > > Date: 2002-12-06 21:36:19 > > > > From my dd: > > <typeMapping qname="baldue:BalanceDueMsg" > > xmlns:baldue="http://balancedue.websvc.csp.leapwireless.com" > > > languageSpecificType="java:com.leapwireless.csp.websvc.balancedue.BalanceDueMsgType" > > > serializer="com.leapwireless.csp.websvc.balancedue.axis.BalanceDueSerializerFactory" > > > deserializer="com.leapwireless.csp.websvc.balancedue.axis.BalanceDueDeserializerFactory" > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> > > > > My web service class' relevant method signature (this is a java rpc > service): > > public BalanceDueMsgType getBalanceDue(BalanceDueMsgType msgT) > > > > I am using JDK 1.4.2, JBoss 3.2.5/JBoss.Net/Axis 1.1 > > > > Basically my DeserializerFactory/Deserializer never gets a chance to deal > with the incoming request message (java rpc web service). The > SimpleDeserializer always gets these and returns a this error when dealing > with the nested type in the message: > > org.xml.sax.SAXException: SimpleDeserializer encountered a child element, > > which is NOT expected, in something it was trying to deserialize. > > > > I set a breakpoint in the Eclipse debugger in the SimpleDeserializer > onChildElement method (which throws the exception) and this is what the > variables look like in that method: > > this= SimpleDeserializer (id=212) > > activeDeserializers= HashSet (id=229) > > attributeMap= null > > cacheStringDSer= null > > cacheXMLType= null > > componentsReadyFlag= false > > constructor= Constructor (id=236) > > defaultType= null > > id= null > > isEnded= false > > isHref= false > > isNil= false > > javaType= Class (java.lang.String) (id=200)//Based on other > problems like this one I believe the problem is here, i.e. axis thinks this > is a string type. > > myElement= null > > myElements= null > > myIndex= 0 > > propertyMap= null > > targets= Vector (id=241) > > typeDesc= null > > val= CharArrayWriter (id=246) > > value= null > > xmlType= QName (id=249) > > localPart= "string" > > namespaceURI= "http://www.w3.org/2001/XMLSchema" > > namespace= "http://balancedue.websvc.csp.leapwireless.com" > > localName= "BalanceDueMsg" > > prefix= "" > > attributes= NullAttributes (id=205) > > context= DeserializationContextImpl (id=213) > > > > > > Most interesting here are the values of the namespace and localName local > variables (which are the ones I want) and the value of the > SimpleDeserializer.javaType field which is set to a String when it should > be BalanceDueMsgType. > > Based on the debugger variables above, the value of the curElement field > inside of the context variable has this data (which is what was intended): > > <BalanceDueMsg xmlns="http://balancedue.websvc.csp.leapwireless.com"> > > <accountNum>ACCOUNTNUMBER</accountNum> > > <sessionId>STRING</sessionId> > > <balanceData/> > > </BalanceDueMsg> > > > > The client I am using is a little gizmo in Oxygen XML that prepares the raw > xml so you can edit it manually and then sends itâ so I am not using any > wsdl2java stubs or anything like that. This tool bases everything off the > wsdl/schema and is more rigorous than most in terms of validation. Also the > information is getting to the correct place in the correct way with the > exception of the Deserializer that is chosen. > > > > Here is the SOAP input and response: > > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> > > <SOAP-ENV:Header/> > > <SOAP-ENV:Body> > > <oxy:getBalanceDue > > xmlns:oxy="http://balancedue.websvc.csp.leapwireless.com" > > > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> > > <msgT> > > <BalanceDueMsg > > xmlns="http://balancedue.websvc.csp.leapwireless.com"> > > <accountNum>ACCOUNTNUMBER</accountNum> > > <sessionId>STRING</sessionId> > > <balanceData/> > > </BalanceDueMsg> > > </msgT> > > </oxy:getBalanceDue> > > </SOAP-ENV:Body> > > </SOAP-ENV:Envelope> > > > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > > <soapenv:Body> > > <soapenv:Fault> > > <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/> > > </soapenv:Fault> > > </soapenv:Body> > > </soapenv:Envelope> > > > > Mike Cassisa > > Software Engineer > > > Cricket Communications > > > 10307 Pacific Center Court > > > San Diego, CA 92121 > > > 858-882-6096 Office > > > > > > A good solution applied with vigor now is better > > > than a perfect solution applied ten minutes later. > > > - General George S. Patton Jr. > >