Someone sent me one more thing to try to fix this. If it is still a problem I will post a new bug report as soon as I can.
Thanks, David -----Original Message----- From: Davanum Srinivas [mailto:[EMAIL PROTECTED]] Sent: Friday, February 07, 2003 1:04 PM To: [EMAIL PROTECTED] Subject: Re: a bug or missing information/documentation? deserializing beans within an array in a bean s/Buzilla/Bugzilla. It's at http://nagoya.apache.org/bugzilla/index.html. Thanks, dims --- Davanum Srinivas <[EMAIL PROTECTED]> wrote: > David, > > Can you please post a stripped down sample that we can use to recreate the problem? Or at least > the product and catalog java classes? > > FYI, We need to get RC1 done quickly...Please add a new bug report to Buzilla ASAP. > > Thanks, > dims > > --- David Gilbert <[EMAIL PROTECTED]> wrote: > > I had originally submitted this question/issue to the axis-users and tried a > > couple of ideas, but didn't find a working answer and wonder if this might > > be an issue with the 1.1 beta release. I am running with Tomcat 4.1.18. > > Others have indicated this should be possible. > > > > The problem I am hitting is that I can't get Axis to deserialize a bean that > > is in an array within another bean. I am trying to return a Catalog class > > that has an array of Products. Here is the error: > > > > - Exception: org.xml.sax.SAXException: No deserializer defined for array > > type {urn:regisproject.util}Product at > > org.apache.axis.encoding.ser.ArrayDeserializer.onStartElement(ArrayDeseriali > > zer.java:254) at > > org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java > > :428) at > > org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa > > tionContextImpl.java:925) at > > org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200) > > at > > org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java: > > 693) at > > org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java > > :404) at > > org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer. > > java:167) at > > org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa > > tionContextImpl.java:925) at > > org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200) > > at > > org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java: > > 693) at > > org.apache.axis.message.RPCElement.deserialize(RPCElement.java:299) at > > org.apache.axis.message.RPCElement.getParams(RPCElement.java:323) at > > org.apache.axis.client.Call.invoke(Call.java:2082) at > > org.apache.axis.client.Call.invoke(Call.java:1986) at > > org.apache.axis.client.Call.invoke(Call.java:1509) at > > regisproject.serviceclient.ProductServiceClient.getCatalog(ProductServiceCli > > ent.java:112) at > > regisproject.serviceclient.ProductServiceClient.main(ProductServiceClient.ja > > va:155) org.xml.sax.SAXException: No deserializer defined for array type > > {urn:regisproject.util}Product > > > > I have other methods using the same service that return a bean with arrays > > of strings and doubles, and another method that returns a single Product > > without any problem. > > > > Is there anything required by Axis to indicate the relationship between the > > Catalog class and the Product class, or should Axis just deserialize objects > > whenever it finds them based on the beanMappings of each bean independently? > > > > Here is the wsdd used to deploy: > > > > <deployment xmlns="http://xml.apache.org/axis/wsdd/" > > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > > <service name="ProductDbHelper" provider="java:RPC"> > > <parameter name="className" > > value="regisproject.database.ProductDbHelper"/> > > <parameter name="allowedMethods" > > value="test,getProduct,getCatalog,getCatalog2"/> > > <beanMapping qname="myNS:Product" > > xmlns:myNS="urn:regisproject.util" > > languageSpecificType="java:regisproject.util.Product"/> > > <beanMapping qname="myNS:Catalog" > > xmlns:myNS="urn:regisproject.util" > > languageSpecificType="java:regisproject.util.Catalog"/> > > <beanMapping qname="myNS:Catalog2" > > xmlns:myNS="urn:regisproject.util" > > languageSpecificType="java:regisproject.util.Catalog2"/> > > </service> > > </deployment> > > > > Attached is the SOAP message from TCPMon. > > > > > > Here is the call set-up: > > public Catalog getCatalog() throws Exception > > { > > Catalog catalog = null; > > > > Service service = new Service(); > > Call call = (Call) service.createCall(); > > QName qn = new QName( "ProductDbHelper", "getCatalog" ); > > QName retQn = new QName( "urn:regisproject.util", "Catalog" ); > > > > call.registerTypeMapping(Catalog.class, retQn, > > new > > org.apache.axis.encoding.ser.BeanSerializerFactory(Catalog.class, retQn), > > new > > org.apache.axis.encoding.ser.BeanDeserializerFactory(Catalog.class, retQn)); > > > > try > > { > > call.setTargetEndpointAddress( new java.net.URL(endpoint) ); > > call.setOperationName(qn); > > > > //call.addParameter( "arg1", > > org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN); > > call.setReturnType( retQn, Catalog.class ); > > > > catalog = (Catalog) call.invoke( new Object[] { } ); > > } > > catch (Exception e) > > { > > System.err.println(e.toString()); > > } > > > > return catalog; > > }//end getCatalog() > > > > > > Let me know if any other info would be useful - or if I am just doing > > something wrong. If something needs to be documented on how to deserialize > > arrays like this I would volunteer to do so, but would need to understand it > > first :). > > > > Thanks! > > > > ----------------------------- > > David Gilbert > > 303.517.1297 > > Cragmont Technologies > > Java, Siebel, and Database Design Services > > www.cragmonttech.com > > > > > > > ATTACHMENT part 2 application/ms-tnef name=winmail.dat > > > > ===== > Davanum Srinivas - http://webservices.apache.org/~dims/ > > __________________________________________________ > Do you Yahoo!? > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > http://mailplus.yahoo.com ===== Davanum Srinivas - http://webservices.apache.org/~dims/ __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com
