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. 
> 
>

Reply via email to