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