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 Matt MacDonald <ma...@mitre.org> on 2002/05/22 17:52:59 UTC
server deserializer problem - I've read the FAQ and archives
Server deserializer problem.
Hi all,
I have read through the examples and FAQ regarding
"How do I send user defined java objects using SOAP?"
and am still encountering a deserializer problem on
the server. The faultString: "No Deserializer found
to deserialize a 'urn://org.mitre.mii:foo' using
encoding style
'http://schemas.xmlsoap.org/soap/encoding/'"
I am running Tomcat 4.0.1.
Web Application 1 is the SOAP server called pdc_soap.war
Web Application 2 is called pdc.war
My client application makes a SOAP RPC to the SOAP
server running in Web App 1. The RPC invokes a method
on a Java object running in Web App 2.
I have created a very simple test RPC that has Web App 1
making a call to an object on Web App 2. It expects a
String as a parameter and returns a String result.
This works so I am assuming that my SOAP/Tomcat
installation is correct?
Any thoughts as to what is causing this faultString?
I have reviewed the deployment descriptor and
SOAPMappingRegistry and can't see any obvious errors.
Any help would be great.
-thanks
-matt
// *******************
// * DeploymentDescriptor.xml
// *******************
<isd:service
xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:project">
<isd:provider type="java" scope="Request" methods="query">
<isd:java class="org.mitre.mii.project.test.Foo" static="false"/>
</isd:provider>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
<isd:mappings>
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding"
xmlns:x="urn://org.mitre.mii"
qname="x:foo"
javaType="org.mitre.mii.project.test.Foo"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
</isd:mappings>
</isd:service>
// *******************
// * SOAP RPC
// *******************
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:query
xmlns:ns1="urn:project"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<foo xmlns:ns2="urn://org.mitre.mii" xsi:type="ns2:foo">
<bar xsi:type="xsd:string" xsi:null="true"/>
</foo>
</ns1:query>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
// **********************
// * Client Java application.
// **********************
Foo foo = new Foo();
Vector params = new Vector();
params.addElement(new Parameter
("foo", Foo.class, foo, null));
SOAPMappingRegistry fooMapping = new SOAPMappingRegistry();
BeanSerializer beanSerializer = new BeanSerializer();
// Map the types.
fooMapping.mapTypes
(Constants.NS_URI_SOAP_ENC,
new QName("urn://org.mitre.mii", "foo"),
org.mitre.mii.project.test.Foo.class,
beanSerializer,
beanSerializer);
Call call = new Call();
call.setTargetObjectURI(targetObjectUri);
call.setMethodName(methodName);
call.setSOAPMappingRegistry(fooMapping);
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams(params);