Ben, I have, and it failed, but that lead me to closely examine my deployment descriptor. I realised that I had sepecified different urns in the name sapce of the beanmapping in the wsdd and the registerTypeMapping() on the call: pretty dumb I know.
However it still failed, i had an odd malformed url exception with the message " Files/Apache", so I moved my tomcat install from c:\program files\apache group to c:\tomcat and now all is well in the world. Even my more complex bean works. Perhaps I should have looked more closely at my own work before posting in a blind panic so often, but when you are new to something it is very hard. I must thanks you all again for your great help. Regards Russell -----Original Message----- From: Ben Souther [mailto:[EMAIL PROTECTED]] Sent: 19 November 2002 14:38 To: [EMAIL PROTECTED] Subject: Re: Serializing / Deserializing 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
