Just out of curiosity, have you tried your code with a simpler bean?  One with 
only strings or integers?   Just to insure that everything else is working?



On Tuesday 19 November 2002 06:26 am, Russell Brown wrote:
> Hi Again,
> Ok I'm spamming the list: I have sorted the problem described in the
> previous post: not be recoding my deserializer, but by using the
> beanMapping tag and the default bean deserilaizer instead.
>
> Thanks again all
>
> Russell
>
> -----Original Message-----
> From: Russell Brown
> Sent: 19 November 2002 11:21
> To: [EMAIL PROTECTED]
> Subject: RE: Serializing / Deserializing
>
>
> Hi,
> Cedric, thanks for your post, I had another good look at my Name Spaces and
> found that the one in the wsdd and the one in the client where quite
> different, which means it was my own stupid fault all along and I am past
> the no deserailizer error, however, I now have a new error that is equallt
> baffling ( but may equally be my own fault ).
>
> The error is
>
>  java.lang.NoSuchFieldException: identifier
>
> which is thrown from my deserializer, I guess it means the bean doesn't
> have a filed called identifier but it does, here is the bean code:
>
>
> /*
>  * Author:    Simon Hartley
>  * Date:      10/2002
>  */
>
> package com.freeserve.fsmap;
>
> import java.util.HashMap;
> import java.io.Serializable;
>
> public class ArgumentSet implements Serializable {
>
>       private String identifier;
>       private HashMap arguments;
>
>       public ArgumentSet(){
>
>               this.identifier = "UNDEFINED";
>               this.arguments = new HashMap(5);
>       }
>
>       public ArgumentSet(String s){
>
>               this.identifier = s;
>               this.arguments = new HashMap(5);
>       }
>
>       public void setIdentifier(String s){
>               identifier = s;
>       }
>
>       public String getIdentifier(){
>               return identifier;
>       }
>
>
>       public void setArguments(HashMap args){
>               arguments = args;
>       }
>
>       public HashMap getArguments(){
>               return arguments;
>       }
> }
>
> so again I am asking you all for help:
>
> Many many thanks for all you help so far, and for any you can give on this
>
> Regards
>
> Russell
>
> -----Original Message-----
> From: C�dric Chabanois [mailto:[EMAIL PROTECTED]]
> Sent: 19 November 2002 10:17
> To: '[EMAIL PROTECTED]'
> Subject: RE: Serializing / Deserializing
>
>
> Hi,
>
> I have passed a bean to an EJB (stateless) as a webservice and got a result
> back ....
>
> My bean was very simple though (only simple types, no HashMap)
>
> In the server wsdd file, I put a beanMapping
>  <beanMapping qname="ns:SEG1Bean" xmlns:ns="http://soapNcl/TEST1/";
>
> languageSpecificType="java:fr.cognicase.webservices.COMMON.SEG1Bean"/>
>
> I don't have any client wsdd file : I used wsdl2java to generate the
> client.
>
>
> I used JBoss, but not Jboss.net.
>
> C�dric Chabanois
>
> > Hi Again,
> > I'm really sorry to go on about this issue on this list but
> > its driving me mad, I have been looking at this for over a
> > week now. I have even got the Axis source code and hacked
> > around with it so I can see at least which classes are doing
> > roughly what. Now... I notice there is a Macromedia engineer
> > on this list, and since you guys have successfully
> > intergrated Axis into both CFMX and Jrun 4 perhaps you will
> > be able to help with me with my ( ongoing ) problem, which is:
> >
> > No matter what I put in the client and the wsdd file the
> > DeSerializer for my bean cannot be found. The bean has two
> > properties, a String and a HashMap and it is serialized fine
> > ( I have seen the resultant SOAP via tcpmon ), however Axis
> > always fails to deserialize the return frm the EJB that I am
> > calling as a webservice ( the EJB is a stateless session bean
> > ). The bean I am serializing , the (de)serializer factories
> > and the actual (de)serializers all seem to be ok, the EJB (
> > deployed in JBoss ) works fine to. The EJB client I wrote to
> > test the EJB works too ( so the EJB is managing to enocode the bean ).
> >
> > I am desperate here, and the thing is , it seems like a
> > relatively simple thing I am trying to do....
> >
> > If someone just tells me they have passed a bean to an EJB as
> > a webservice and got a result back......well I'll keep trying.
> >
> >
> > Regards in desperation
> >
> > Russell
> >
> > -----Original Message-----
> > From: Russell Brown
> > Sent: 18 November 2002 09:12
> > To: [EMAIL PROTECTED]
> > Subject: RE: Serializing / Deserializing
> >
> >
> > Ben,
> > I am, just here:
> >
> >  call.registerTypeMapping(ArgumentSet.class, qn,
> > FSSerializerFactory.class, FSDeserializerFactory.class, t);
> >
> > and yes, the ArgumentSet class ( that is the bean ) is
> > available as I make one and pass it to the webservice in the
> > call ( it is correctly serialized by the way, I have seen the
> > resulting SOAP with tcpmon )
> >
> >
> >
> > HashMap ht = new HashMap(5);
> > ht.put("postcode","LS176PJ");
> > ht.put("addressLine1","2");
> >
> > //create ArgumentSet
> > ArgumentSet as = new ArgumentSet();
> > as.setIdentifier("lookupPostCode");
> > as.setArguments(ht);
> >
> >
> > result = (ArgumentSet) call.invoke( new Object[] { as } );
> >
> >
> > It is only the deserialization of the returned ArgumentSet
> > that is an issue. To be honest its driving me mad, I 'm going
> > to write a simple bean that returns a string and see how that
> > works, then I'll try a bean with simple values for its fields
> > ( Strings and Ints ) , if that works I'll blame it on the HashMap.
> >
> > Cheers
> >
> > Russell
> >
> > -----Original Message-----
> > From: Ben Souther [mailto:[EMAIL PROTECTED]]
> > Sent: 15 November 2002 17:54
> > To: [EMAIL PROTECTED]
> > Subject: Re: Serializing / Deserializing
> >
> >
> > Are you calling:  call.registerTypeMapping(args...) anywhere
> > in your code?
> > Is the class file for you javabean available to your client?
> >
> > On Friday 15 November 2002 12:46 pm, Russell Brown wrote:
> > > Cheers ben,
> > >
> > > That is pretty much line for line what I have, except that
> >
> > the service
> >
> > > provider is java:EJB and maybe that is where my problem is.
> >
> > It migt be the
> >
> > > marshalling at the EJB end that is returning the wrong
> >
> > type. I just don't
> >
> > > know enough about this to debug it. I have got the Axis
> >
> > source code and am
> >
> > > reading through the stack trace trying to figure out why
> >
> > this works in the
> >
> > > client
> > >
> > > TypeMapping tm = call.getTypeMapping();
> > > DeserializerFactory dsf =
> >
> > (org.apache.axis.encoding.DeserializerFactory)tm.getDeserializer(qn);
> >
> > > if(dsf != null) {
> > >  FSDeserializer fsd =
> >
> > (com.freeserve.fsmap.encoding.FSDeserializer)dsf.getDeserializ
> > erAs(Constant
> >
> > >s.AXIS_SAX); }
> > >
> > > but not in the RPCHandler class ( where the error is being thrown )
> > >
> > > if (dser == null) {
> > > //hack this to get our deserializer:
> > > //*****************************************************
> > >
> > > TypeMapping tmfs = context.getTypeMapping();
> > > DeserializerFactory dsf =
> >
> > (org.apache.axis.encoding.DeserializerFactory)tmfs.getDeserial
> > izer(qname);
> >
> > > if(dsf != null) {
> > >   dser =
> >
> > (org.apache.axis.encoding.Deserializer)dsf.getDeserializerAs(C
> > onstants.AXIS
> >
> > >_SAX); } else {
> > >   System.out.println("Still couldn't find it!!!");
> > > throw new SAXException(Messages.getMessage("noDeser01",
> >
> > localName,"" +
> >
> > > type)); }
> > >
> > > //*****************************************************
> > >  //end hack
> > > }
> > >
> > >
> > > So, thanks for your help, I'll post to the list if I can
> >
> > find out what is
> >
> > > going wrong with my code .
> > >
> > > Regards
> > >
> > > Russell
> > >
> > > -----Original Message-----
> > > From: Ben Souther [mailto:[EMAIL PROTECTED]]
> > > Sent: 15 November 2002 17:39
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: Serializing / Deserializing
> > >
> > >
> > >
> > > This is up and working with Axis 1.0. on tomcat 4.1.12.
> > > I'm sorry if it's sloppy.
> > > Good luck.
> > >
> > >
> > >
> > >
> > > From the WSDD:
> > >
> > >  <service name="PayrollSummaryService" provider="java:RPC">
> > >      <parameter name="className"
> >
> > value="com.someone.somwhere.service.PayrollSummaryService"/>
> > <parameter
> >
> > > name="allowedMethods" value="*" />
> > >
> > >      <beanMapping qname="ns1:PayrollSummaryDataBean"
> >
> > xmlns:ns1="com.someone.somewhere.payrollsummary.shared"
> >
> >
> > languageSpecificType="java:com.someone.somewhere.payrollsummar
> > y.shared.Payr
> >
> > >ollSummaryDataBean" />
> > >
> > >      <beanMapping qname="ns1:EmployeeListDataBean"
> >
> > xmlns:ns1="com.someone.somewhere.payrollsummary.shared"
> >
> >
> > languageSpecificType="java:com.someone.somewhere.payrollsummar
> > y.shared.Empl
> >
> > >oyeeListDataBean" /> </service>
> > >
> > >
> > >
> > >
> > > From the client:
> > >
> > >
> > >                   try{
> > >     112             Service service = new Service();
> > >     113             Call    call    = (Call)service.createCall();
> > >     114             call.setTargetEndpointAddress(
> > >     115                 new URL(_payrollSummaryServiceURL));
> > >     116
> > >     117             QName qName = new QName(
> > >     118                 "PayrollSummaryService",
> > >     119                 "getPayrollSummaryData"
> > >     120             );
> > >     121             call.setOperationName(qName);
> > >     122
> > >     123             //
> > >     124             // The QName for mapping the
> >
> > PayrollSummaryDataBean
> >
> > >     125             // to the return value from the web service.
> > >     126             //
> > >     127             QName returnQName = new QName(
> > >     128
> >
> > "com.someone.somewhere.payrollsummary.shared",
> >
> > >     129                 "PayrollSummaryDataBean"
> > >     130             );
> > >     131
> > >     132             call.registerTypeMapping(
> > >     133                 PayrollSummaryDataBean.class,
> > >     134                 returnQName,
> > >     135                 new BeanSerializerFactory(
> > >     136                     PayrollSummaryDataBean.class,
> > >     137                     returnQName
> > >     138                 ),
> > >     139                 new BeanDeserializerFactory(
> > >     140                     PayrollSummaryDataBean.class,
> > >     141                     returnQName
> > >     142                 )
> > >     143             );
> > >     144
> > >     145             call.setReturnType(
> > >     146                 returnQName,
> > >     147                 PayrollSummaryDataBean.class
> > >     148             );
> > >     149
> > >     150             System.out.println("period: " + _period);
> > >     151
> > >     152             _dataBean = (PayrollSummaryDataBean)call.invoke(
> > >     153                 new Object[]{
> > >     154                         _clientID,
> > >     155                         _employeeID,
> > >     156                         _period,
> > >     157                         _year
> > >     158                 }
> > >     159             );
> > >     160         }catch(Exception e){
> > >     161             System.out.println(
> > >     162                 "Error in PayrollSummaryBean: "
> > >     163                 + e
> > >     164             );
> > >     165         }
> > >     16
> > >
> > > On Friday 15 November 2002 11:42 am, Russell Brown wrote:
> > > > Hi,
> > > >
> > > > Has anyone on this list managed to serialize AND
> >
> > deserialize a bean with
> >
> > > > Axis's bean serializer or there own custom serializer /
> >
> > deserializer ever
> >
> > > > ?
> > > >
> > > > Just to know that it has been done once will fill me with
> >
> > a renewed hope.
> >
> > > > If you can tell me how you side stepped the ubiquitous
> >
> > error (Error :
> > > > org.xml.sax.SAXException: Deserializing parameter 'arg1':
> >
> >  could not find
> >
> > > > deserializer for type ANYTYPEWHATSOEVEREXCEPTPRIMATIVES)
> >
> > as well I may
> >
> > > > very well weep with joy.
> > > >
> > > > Many thanks
> > > >
> > > > Russell
> > > >
> > > > PS check this out:
> > > >
> > > >  call.registerTypeMapping(ArgumentSet.class, qn,
> > > > FSSerializerFactory.class, FSDeserializerFactory.class, t);
> > > >
> > > >  TypeMapping tm = call.getTypeMapping();
> > > >  boolean isit = tm.isRegistered(ArgumentSet.class, qn);
> > > >
> > > >  System.out.println("Well isit ? : "+isit);
> > > >
> > > > DeserializerFactory dsf =
> >
> > (org.apache.axis.encoding.DeserializerFactory)tm.getDeserializer(qn);
> >
> > > > if(dsf != null) {
> > > >         FSDeserializer fsd =
> >
> > (com.freeserve.fsmap.encoding.FSDeserializer)dsf.getDeserializ
> > erAs(Consta
> >
> > > >nt s.AXIS_SAX); }
> > > >
> > > > all works, yes I can find the f***** deserializer but
> >
> > AxisEngine cannot:
> > > > anyone, anyone ??
> > > >
> > > > RB

Reply via email to