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]>

Reply via email to