Hi,
My beans have all getter and setter methods for their fields and some
further public methods for modifiying the fields.
I tried to use the SOAP mapping registry, but I cannot find my error.
I deployed the mappings to the server:
<isd:mappings>
<isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:SOAPTest" qname="x:MyBean"
javaType="com.ts.distributed_apps.MyBean"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
<isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:SOAPTest" qname="x:Data1"
javaType="com.ts.distributed_apps.Data1"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
<isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:SOAPTest" qname="x:Data2"
javaType="com.ts.distributed_apps.Data2"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
</isd:mappings>
------------------------------------------------------------------
And my client:
URL url = new URL("http://localhost:8081/soap/servlet/rpcrouter");
// Build the call.
Call call = new Call();
call.setTargetObjectURI("urn:SOAPTest");
call.setMethodName("server3");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// Create the type mapping registry
SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
// Map the types.
smr.mapTypes(
Constants.NS_URI_SOAP_ENC,
new QName "urn:SOAPTest", "com.ts.distributed_apps.MyBean"),
com.ts.distributed_apps.MyBean.class,
beanSer,
beanSer);
smr.mapTypes(
Constants.NS_URI_SOAP_ENC,
new QName("urn:SOAPTest", "com.ts.distributed_apps.Data1"),
com.ts.distributed_apps.Data1.class,
beanSer,
beanSer);
smr.mapTypes(
Constants.NS_URI_SOAP_ENC,
new QName("urn:SOAPTest", "com.ts.distributed_apps.Data2"),
com.ts.distributed_apps.Data2.class,
beanSer,
beanSer);
// and tell the Call object to use it..
call.setSOAPMappingRegistry(smr);
// Set the Parameters
Vector params = new Vector();
params.addElement(
new Parameter(
"MyBean",
com.ts.distributed_apps.MyBean.class,
soapTest,
null)); //soapTest is my bean
call.setParams(params);
// Invoke the call.
Response resp = null;
try
{
resp = call.invoke(url, "");
}
Any suggestion, what I´m coding wrong?
regards,
Darko
> Hi,
>
> You will need to register serializers and deserializers for the Data1 and
> Data2 classes with the SOAP mapping registry; once you do that
> BeanSerializer should be able to handle the MyBean class (assuming that
> it
> has all the properties of a bean, including the required setters and
> getters...)
>
> Nirmal.
>
>
>
>
>
>
>
> Hello,
>
> I´m a newbee and I´m trying to use a bean for a RPC. My bean has so
> me
> protected String values with 2 Vector classes. Each Vector holds only o
> ne
> type of
> Objects.
> Example:
> public class MyBean
> {
> protected String test1;
> protected String test2;
> protected String test3;
> protected String test4;
> protected Vector collection1; //a collection of Data1
> protected Vector collection2; //a collection of Data2
> }
>
> public class Data1
> {
> protected java.lang.String Link;
> protected java.lang.String LinkName;
> }
>
> public class Data2
> {
> protected java.lang.String data;
> protected java.lang.String type;
> }
>
> Is it possible to serialize and deserialize the bean? I´ve read in th
> e API,
> that the VectorSerializer isn´t able to deserialize the Vector.
--
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net
GMX Tipp:
Machen Sie Ihr Hobby zu Geld bei unserem Partner 1&1!
http://profiseller.de/info/index.php3?ac=OM.PS.PS003K00596T0409a