Aaah, thanks Scott Jason - eternal newbie
"There are only 10 types of people in this world -- those that understand binary and those that don't" -----Original Message----- From: Scott Nichol [mailto:[EMAIL PROTECTED]] Sent: Tuesday, October 15, 2002 1:04 PM To: [EMAIL PROTECTED] Subject: Re: Deserialization error when running a test client Jason, You will have better luck with Axis questions at [EMAIL PROTECTED] Scott Nichol ----- Original Message ----- From: "Adam, Jason C" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, October 15, 2002 2:38 PM Subject: Deserialization error when running a test client > I'm new to the list, and to Web Services (in a grad class for it), so let me > first say howdy! > > I'm getting error when trying to run some client code. I'm using two types > of clients, one using the low level API's and one that uses the stub code > generated with WSDL2Java. My current environment is: > > Java 1.4.1 SDK > J2EE 1.3.1 SDK > Axis 1.0 > Tomcat 4.0.4 > Ant 1.5 > > My web service interface is as follows: > > import data.Ad ; > > public interface AdWS > { > public boolean placeAd( Ad ad ) ; > public Ad[] searchAds( Ad ad ) ; > } > > My deploy.wsdd looks like: > > <deployment > xmlns="http://xml.apache.org/axis/wsdd/" > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > > <service name="AdWebService" provider="java:RPC"> > <parameter name="className" value="AdWSImpl"/> > <parameter name="allowedMethods" value="placeAd"/> > <beanMapping > qname="AdNS:Ad" > xmlns:AdNS="urn:AdWS" > languageSpecificType="java:Ad"/> > </service> > </deployment> > > My build.xml has the following for generating my stubs: > > <target name="ad.stubs"> > <java classname="org.apache.axis.wsdl.WSDL2Java" fork="yes"> > <arg value="-o"/> > <arg value="."/> > <arg value="./conf/AdWebService.wsdl"/> > <classpath> > <path refid="axis.libraries"/> > </classpath> > </java> > </target> > > The service deploys fine without errors. My client code utilizing the API's > looks like: > > import org.apache.axis.AxisFault; > import org.apache.axis.client.Call; > import org.apache.axis.client.Service; > import org.apache.axis.encoding.XMLType; > import org.apache.axis.utils.Options; > > import javax.xml.namespace.QName; > import javax.xml.rpc.ParameterMode; > import data.Ad ; > > public class LowClient > { > public static void main(String [] args) throws Exception > { > String[][] keys = { {"Seller","Jason Adam"}, > {"State","CO"}, > > {"Breed","Appaloosa"}, > {"Name","Pearl"}, > {"Price","N/A"}, > {"Ad","Test AD"} > }; > > Options options = new Options(args); > Service service = new Service(); > Call call = (Call) service.createCall(); > > Ad ad = new Ad(); > ad.setCategory( "Horse" ); > ad.setKeywords( keys ); > QName qn = new QName( "urn:AdWS", "Ad" ); > > call.registerTypeMapping(Ad.class, qn, > new org.apache.axis.encoding.ser.BeanSerializerFactory(Ad.class, qn), > new > org.apache.axis.encoding.ser.BeanDeserializerFactory(Ad.class, qn)); > > try { > call.setTargetEndpointAddress( new > java.net.URL(options.getURL()) ); > call.setOperationName( new QName("AdWebService", "placeAd") ); > call.addParameter( "arg1", qn, ParameterMode.IN ); > call.setReturnClass( Boolean.class ); > call.setReturnType( qn , Boolean.class ); > boolean ret = ( (Boolean)call.invoke( new Object [] { ad }) > ).booleanValue(); > System.out.println("Result : " + ret); > } catch (AxisFault fault) { > System.out.println( "Error : " + fault.toString()); > } > } > } > > If I use this client, I get the following error: > > lowclient.run: > [java] Error : org.xml.sax.SAXException: Deserializing parameter > 'arg1': > could not find deserializer for type {urn:AdWS}Ad > > My client using the stub stuff is: > > public class Client > { > public static void main(String [] args) throws Exception > { > System.out.println( "Test" ); > System.out.println( "In Client" ); > String[][] keys = { {"Seller","Jason Adam"}, > {"State","CO"}, > > {"Breed","Appaloosa"}, > {"Name","Pearl"}, > {"Price","N/A"}, > {"Ad","Test AD"} > }; > System.out.println( "Creating locator" ); > > localhost.AdWSImplServiceLocator locator = > new localhost.AdWSImplServiceLocator(); > System.out.println( "Locator received: " + locator ); > localhost.AdWSImpl aws =locator.getAdWebService(); System.out.println( > "AWS received: " + aws ); data.Ad ad = new data.Ad(); > ad.setCategory("Horse"); > ad.setKeywords( keys ); > System.out.println( "Ad created and set" ); > boolean result = aws.placeAd( ad ); > System.out.println( "Ad placed" ); > if( result ) > { > System.out.println( "Success!" ); > } > else > { > System.out.println( "Failure" ); > } > } > } > > And I get the following error using that client: > > client.run: > [java] Test > [java] In Client > [java] Creating locator > [java] Locator received: localhost.AdWSImplServiceLocator@e87719 > [java] AWS received: localhost.AdWebServiceSoapBindingStub@b48197 > [java] Ad created and set > [java] AxisFault > [java] faultCode: {http://xml.apache.org/axis/}Server.userException > [java] faultString: org.xml.sax.SAXException: Deserializing parameter > 'in0 > ': could not find deserializer for type {http://data}Ad > [java] faultActor: null > [java] faultDetail: > [java] stackTrace: org.xml.sax.SAXException: Deserializing > parameter 'i > n0': could not find deserializer for type {http://data}Ad > [java] at > org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.ja > va:276) > [java] at > org.apache.axis.encoding.DeserializationContextImpl.startElem > ent(DeserializationContextImpl.java:893) > [java] at > org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRec > order.java:200) > [java] at > org.apache.axis.message.MessageElement.publishToHandler(Messa > geElement.java:684) > [java] at > org.apache.axis.message.RPCElement.deserialize(RPCElement.jav > a:207) > [java] at > org.apache.axis.message.RPCElement.getParams(RPCElement.java: > 265) > [java] at > org.apache.axis.providers.java.RPCProvider.processMessage(RPC > Provider.java:190) > [java] at > org.apache.axis.providers.java.JavaProvider.invoke(JavaProvid > er.java:276) > [java] at > org.apache.axis.strategies.InvocationStrategy.visit(Invocatio > nStrategy.java:71) > [java] at > org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156) > [java] at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126) > [java] at > org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService. > java:437) > [java] at > org.apache.axis.server.AxisServer.invoke(AxisServer.java:316) > > [java] at > org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet > .java:701) > [java] at > javax.servlet.http.HttpServlet.service(HttpServlet.java:760) > [java] at > org.apache.axis.transport.http.AxisServletBase.service(AxisSe > rvletBase.java:335) > [java] at > javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > [java] at > org.apache.catalina.core.ApplicationFilterChain.internalDoFil > ter(ApplicationFilterChain.java:247) > [java] at > org.apache.catalina.core.ApplicationFilterChain.doFilter(Appl > icationFilterChain.java:193) > [java] at > org.apache.catalina.core.StandardWrapperValve.invoke(Standard > WrapperValve.java:243) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:566) > [java] at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipe > line.java:472) > [java] at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.j > ava:943) > [java] at > org.apache.catalina.core.StandardContextValve.invoke(Standard > ContextValve.java:190) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:566) > [java] at > org.apache.catalina.valves.CertificatesValve.invoke(Certifica > tesValve.java:246) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:564) > [java] at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipe > line.java:472) > [java] at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.j > ava:943) > [java] at > org.apache.catalina.core.StandardContext.invoke(StandardConte > xt.java:2347) > [java] at > org.apache.catalina.core.StandardHostValve.invoke(StandardHos > tValve.java:180) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:566) > [java] at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorD > ispatcherValve.java:170) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:564) > [java] at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepor > tValve.java:170) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:564) > [java] at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogVal > ve.java:468) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:564) > [java] at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipe > line.java:472) > [java] at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.j > ava:943) > [java] at > org.apache.catalina.core.StandardEngineValve.invoke(StandardE > ngineValve.java:174) > [java] at > org.apache.catalina.core.StandardPipeline.invokeNext(Standard > Pipeline.java:566) > [java] at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipe > line.java:472) > [java] at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.j > ava:943) > [java] at > org.apache.catalina.connector.http.HttpProcessor.process(Http > Processor.java:1027) > [java] at > org.apache.catalina.connector.http.HttpProcessor.run(HttpProc > essor.java:1125) > [java] at java.lang.Thread.run(Thread.java:536) > > > [java] org.xml.sax.SAXException: Deserializing parameter 'in0': could > not > find deserializer for type {http://data}Ad > [java] at > org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFault > Builder.java:135) > [java] at > org.apache.axis.encoding.DeserializationContextImpl.endElemen > t(DeserializationContextImpl.java:942) > [java] at > org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java > :1403) > [java] at > org.apache.xerces.validators.common.XMLValidator.callEndEleme > nt(XMLValidator.java:1550) > [java] at > org.apache.xerces.framework.XMLDocumentScanner$ContentDispatc > her.dispatch(XMLDocumentScanner.java:1204) > [java] at > org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLD > ocumentScanner.java:381) > [java] at > org.apache.xerces.framework.XMLParser.parse(XMLParser.java:10 > 98) > [java] at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) > [java] at > org.apache.axis.encoding.DeserializationContextImpl.parse(Des > erializationContextImpl.java:232) > [java] at > org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:546) > > [java] at org.apache.axis.Message.getSOAPEnvelope(Message.java:377) > [java] at org.apache.axis.client.Call.invokeEngine(Call.java:2132) > [java] at org.apache.axis.client.Call.invoke(Call.java:2102) > [java] at org.apache.axis.client.Call.invoke(Call.java:1851) > [java] at org.apache.axis.client.Call.invoke(Call.java:1777) > [java] at org.apache.axis.client.Call.invoke(Call.java:1315) > [java] at localhost.AdWebServiceSoapBindingStub.placeAd(Unknown > Source) > > [java] at Client.main(Unknown Source) > [java] Exception in thread "main" > [java] Java Result: 1 > > > The errors look like the same issue is occuring, though I'm not sure why one > generates a different format for the data type that can't be deserialized. > > Any ideas where the problem is occuring? Any help is appreciated, and I > apologize for all the extra code and stuff, wanted to make sure I presented > everything that may be of value. Let me know if you need some other info. > > Thanks! > > Jason > > "There are only 10 types of people in this world -- those that understand > binary and those that don't" > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>