Hi Venkatesh,
Thanks. I have corrected the problem but now I am getting this error:
SEVERE: Exception:
org.xml.sax.SAXException: No deserializer for {urn:PublicService3}Param
at org.apache.axis.encoding.DeserializerImpl.onStartElement(Deserializer
Impl.java:485)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerIm
pl.java:428)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(Dese
rializationContextImpl.java:976)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
va:198)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElemen
t.java:722)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
at org.apache.axis.client.Call.invoke(Call.java:2272)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at apacheaxis.Client.main(Client.java:38)
Error : org.xml.sax.SAXException: No deserializer for {urn:PublicService3}Param.
org.xml.sax.SAXException: No deserializer for {urn:PublicService3}Param
at org.apache.axis.encoding.DeserializerImpl.onStartElement(Deserializer
Impl.java:485)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerIm
pl.java:428)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(Dese
rializationContextImpl.java:976)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
va:198)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElemen
t.java:722)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
at org.apache.axis.client.Call.invoke(Call.java:2272)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at apacheaxis.Client.main(Client.java:38)
Error : org.xml.sax.SAXException: No deserializer for {urn:PublicService3}Param.
As you see in the Client code and the deploy.wsdd I have defined deser. I don't know what is going on.
Thanks,
Tony.
--------------deploy.wsdd-------
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="PublicService3" provider="java:RPC" style="wrapped">
<parameter name="className" value="apacheaxis.PublicService3"/>
<parameter name="allowedMethods" value="getSeveralBusinessLocation"/>
<beanMapping qname="myNS:Request" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Request"/>
<beanMapping qname="myNS:Param" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Param"/>
<typeMapping qname="myNS:Param" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Param"
deserializer="apacheaxis.ParamDeserFactory"/>
</service>
</deployment>
<service name="PublicService3" provider="java:RPC" style="wrapped">
<parameter name="className" value="apacheaxis.PublicService3"/>
<parameter name="allowedMethods" value="getSeveralBusinessLocation"/>
<beanMapping qname="myNS:Request" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Request"/>
<beanMapping qname="myNS:Param" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Param"/>
<typeMapping qname="myNS:Param" xmlns:myNS="urn:PublicService3" languageSpecificType="java:apacheaxis.Param"
deserializer="apacheaxis.ParamDeserFactory"/>
</service>
</deployment>
Venkatesh Kancharla <[EMAIL PROTECTED]> wrote:
Hi Tony,
There is a problem with your client code.. You have sent the
return type as Param and your type casting the result to a ArrayList..
So, modify your Client.java file and you need to modify the statement
call.setReturnClass(Param.class)...
regards
Venkatesh
On Thu, 5 Feb 2004, Tony Blair wrote:
> Hi Venkatesh,
>
> Thanks for the suggestion. I slightly modified my code from yesterday where my bean takes a Collection and my service also returns a Collection. Based on the error I get I am not sure if the ser/deser are the problem. Here is the error and thanks for all the help you can give me.
>
> -----------error msg-------------
> SEVERE: Exception:
> org.xml.sax.SAXException: Bad types (class [Ljava.lang.Object; -> class apacheax
> is.Param)
> at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:311)
> at org.apache.axis.encoding.DeserializationContextImpl.startElement(Dese
> rializationContextImpl.java:963)
> at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
> va:198)
> at org.apache.axis.message.MessageElement.publishToHandler(MessageElemen
> t.java:722)
> at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
> at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
> at org.apache.axis.client.Call.invoke(Call.java:2272)
> at org.apache.axis.client.Call.invoke(Call.java:2171)
> at org.apache.axis.client.Call.invoke(Call.java:1691)
> at apacheaxis.Client.main(Client.java:41)
> Error : org.xml.sax.SAXException: Bad types (class [Ljava.lang.Object; -> class
> apacheaxis.Param)
>
> -------------------The first bean------------------
> public class Request
> {
> / ********** this bean now handles collections*************/
> private Collection params=null
>
> public Collection getParams()
> { return params; }
> public void setParams(Collection data)
> { params=data; }
>
> }
> ------------- The 2nd bean ------------
> public class Param implements java.io.Serializable
> {
> /********** this class remains unchanged **************/
> private String name=null;
> private Object value=null;
> public String getName()
> { return name; }
> public void setName(String data)
> { name = data; }
>
> public Object getValue()
> { return value; }
> public void setValue(Object data)
> { value=data; }
> }
>
> -------------- The service --------------
> public class PublicService3
> {
> /********Service now is returning Collection *******/
> public Collection getSeveralBusinessLocation(Request req){
> Collection busLoc = new ArrayList(2);
> Param line1= new Param();
> line1.setName("LINE_1");
> line1.setValue("121 River Street");
> busLoc.add(line1);
> Param name= new Param();
> name.setName("BUSINESS_NAME");
> name.setValue("Marsh");
> busLoc.add(name);
>
> return busLoc;
> }
> }
> ------------Client ---------
> public class Client
> {
> public static void main(String [] args) throws Exception
> {
> Options options = new Options(args);
>
> Request req = new Request();
>
> Service service = new Service();
> Call call = (Call) service.createCall();
> QName qn = new QName( "urn:PublicService3", "Request" );
> call.registerTypeMapping(Request.class, qn,
> new org.apache.axis.encoding.ser.BeanSerializerFactory(Request.class, qn),
> new org.apache.axis.encoding.ser.BeanDeserializerFactory(Request.class, qn));
> call.registerTypeMapping(Param.class, qn,
> new org.apache.axis.encoding.ser.BeanSerializerFactory(Param.class, qn),
> new org.apache.axis.encoding.ser.BeanDeserializerFactory(Param.class, qn));
> Collection result=null;
> try {
> call.setTargetEndpointAddress( new java.net.URL(options.getURL()) );
> call.setOperationName( new QName("PublicService3", "getSeveralBusinessLocation") );
> call.addParameter( "arg1", qn, ParameterMode.IN );
> call.setReturnClass(Param.class);
> result = (ArrayList) call.invoke( new Object[] { req } );
> } catch (AxisFault fault) {
> String error = "Error : " + fault.toString();
> System.out.println(error);
> }
> System.out.println("Name Value");
> System.out.println("------------------------");
> Iterator itr = result.iterator();
> while(itr.hasNext()){
> Param p = (Param)itr.next();
> String name = p.getName();
> String value = (String)p.getValue();
> System.out.println(name+" "+value);
> }
> }
> }
>
> -----------deploy.wsdd----------------
>
>
>
>
>
>
>> deserializer="apacheaxis.ParamDeserFactory"/>
>
>
>
>
> Thanks,
> Tony.
>
> Venkatesh Kancharla <[EMAIL PROTECTED]>wrote:
> Have a look at org.apache.axis.encoding.ser package. It contains all the
> serializers and deserializers for some collecion objects.
>
> On Wed, 4 Feb 2004, Tony Blair wrote:
>
> > Venkatesh,
> >
> > Does Axis allow beans to have Collections as their data member?
> >
> > Thanks,
> > Tony.
> >
> > Venkatesh Kancharla wrote:
> > >
> > > Error : org.xml.sax.SAXException: SimpleDeserializer encountered a child element
> > > , which is NOT expected, in something it was trying to deserialize.
> > >
> > > My client is invoking a call to the service and pass it a bean that has a complex type as a data member. Should I post the code and deploy.wsdd?
> >
> > is your complex object a bean? you can only pass beans ( it should have
> > setter/getter methods for all of its instance variables)
> >
> >
> > >
> > > Thanks in advance.
> > >
> > >
> > > ---------------------------------
> > > Do you Yahoo!?
> > > Yahoo! SiteBuilder - Free web site building tool. Try it!
> >
> >
> > ---------------------------------
> > Do you Yahoo!?
> > Yahoo! SiteBuilder - Free web site building tool. Try it!
>
>
> ---------------------------------
> Do you Yahoo!?
> Yahoo! Finance: Get your refund fast by filing online
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online
