Hi all, I've a problem with my custom (de)serializer. I'm using Apache-
soap2.3.1 & TomCat4.01.
The client code is:
....
URL url = new URL("http://localhost:8080/soap/servlet/rpcrouter");
Call call = new Call();
SOAPMappingRegistry smr = new SOAPMappingRegistry();
call.setTargetObjectURI("urn:DataFeedService");
call.setMethodName("sendMessage");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setSOAPMappingRegistry(smr);
DataFeedMessageSerializer msgSer = new DataFeedMessageSerializer
();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,
new QName("urn:DataFeedService", "DataFeedMessage"),
DataFeedMessage.class, msgSer, msgSer);
DataFeedMessage msg = new DataFeedMessage();
Vector params = new Vector();
params.addElement(new Parameter("msg",
DataFeedMessage.class, msg, null));
call.setParams(params);
try {
Response resp = call.invoke(url, "");
if(!resp.generatedFault())
{
Parameter ret = resp.getReturnValue();
Object value = ret.getValue();
System.out.println("*\n"+value);
}
else
{
Fault fault = resp.getFault();
System.err.println("--------------------------------");
System.err.println("Attention: Fault Condition");
System.err.println("Code: "+ fault.getFaultCode());
System.err.println("Description: "+
fault.getFaultString());
System.err.println("--------------------------------");
}
}
catch (SOAPException e) {
System.err.println("Caught SOAPException (" +
e.getFaultCode() + "): " +
e.getMessage());
}
}
....
and the Deployement Descriptor is:
<isd:service
xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:DataFeedService">
<isd:provider
type="java"
scope="Request"
methods="sendMessage">
<isd:java
class="DataFeedService"
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:DataFeedService" qname="x:DataFeedMessage"
javaType="DataFeedMessage"
xml2JavaClassName="DataFeedMessageSerializer"
java2XMLClassName="DataFeedMessageSerializer"
/>
</isd:mappings>
</isd:service>
Now, when I run the client, my custom serializer send this:
POST /soap/servlet/rpcrouter HTTP/1.0
Host: localhost:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 524
SOAPAction: ""
<?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/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:sendMessage xmlns:ns1="urn:DataFeedService" SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<msg xsi:type="ns1:DataFeedMessage">
<?jsx version="1"?>
<DataFeedMessage alias-ID="0"
n="0"/>
</msg>
</ns1:sendMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
and, as you can see, I used JSX in my custom (de)serializer
and "DataFeedMessage" is a generic
object (not a Javabean). But the response is:
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset=utf-8
Content-Length: 613
Date: Wed, 16 Oct 2002 12:21:37 GMT
Server: Java Web Services Developer Pack/1.0-ea1 (HTTP/1.1 Connector)
Set-Cookie: JSESSIONID=9D5D04EFBB4F2D38FE2F24808B3C22E7;Path=/soap
<?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/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>Deployment error in SOAP service
'urn:DataFeedService': class name
'DataFeedMessageSerializer' could not be resolved as a
serializer: DataFeedMessageSerializer</faultstring>
<faultactor>/soap/servlet/rpcrouter</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Maybe I have to change the encoding-style?
Can you help me?
Thank you in advance!
Stefano Pedon
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>