Could you please post exception Stack trace. It would probably help ...

C�dric

> -----Message d'origine-----
> De : Russell Brown [mailto:[EMAIL PROTECTED]]
> Envoy� : mardi 19 novembre 2002 12:21
> � : [EMAIL PROTECTED]
> Objet : 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