You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@xml.apache.org by "Adam, Jason C" <ja...@lmco.com> on 2002/10/15 20:38:34 UTC

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:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: Deserialization error when running a test client

Posted by Scott Nichol <sn...@scottnichol.com>.
Jason,

You will have better luck with Axis questions at
axis-user@xml.apache.org.

Scott Nichol

----- Original Message -----
From: "Adam, Jason C" <ja...@lmco.com>
To: <so...@xml.apache.org>
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:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


Re: Deserialization error when running a test client

Posted by Scott Nichol <sn...@scottnichol.com>.
Jason,

You will have better luck with Axis questions at
axis-user@xml.apache.org.

Scott Nichol

----- Original Message -----
From: "Adam, Jason C" <ja...@lmco.com>
To: <so...@xml.apache.org>
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:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>