If you want to use JSX to serialize and de-serialize, you will have to
define your own proprietary encodingStyle.  The XML below generated by
JSX does not follow SOAP serialization.

Scott Nichol

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "soap-user" <[EMAIL PROTECTED]>
Sent: Tuesday, October 01, 2002 7:22 AM
Subject: custom (de)serializer using JSX


Hi, I'm a student (University of Padova, Italy) and I would like to use
JSX for replace Apache-SOAP's serialization (version 2.3.1). I know
that I must write a custom serializer but I dont know how to bind it
with JSX (generic XML Serializer e.g.
http://www.csse.monash.edu.au/~bren/JSX/).
I tried and I wrote a marshall() method as:

public void marshall(String inScopeEncStyle, Class javaType,
Object src, Object context, Writer sink,
NSStack nsStack, XMLJavaMappingRegistry xjmr,
SOAPContext ctx)
throws IllegalArgumentException, IOException
{

if(!javaType.equals(DataFeedMessage.class)) {
throw new IllegalArgumentException(
"Can only serialize DataFeedMessage instances");
}

nsStack.pushScope();

if (src != null)
{

SoapEncUtils.generateStructureHeader(inScopeEncStyle,
javaType, context,
sink, nsStack, xjmr);
ObjOut out=new ObjOut(sink);
out.writeObject(src);

ObjOut out2=new ObjOut();
out2.writeObject(src);

sink.write("</" + context + '>');
}
else
{
SoapEncUtils.generateNullStructure(inScopeEncStyle,
javaType, context,
sink, nsStack, xjmr);
}
nsStack.popScope();
}

It's correct?
And ... how to write the unmarshall() method?

The problem is: it doesn't work.  Although it send something like
this:

POST /soap/servlet/rpcrouter HTTP/1.0
Host: localhost:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 837
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">
<java.util.Hashtable alias-ID="1" obj-name="_fields">
<java.lang.String alias-ID="2" valueOf="REQUEST"/>
<java.lang.String alias-ID="3" valueOf="PRICE"/>

<java.lang.String alias-ID="4" valueOf="SYMBOL"/>
<java.lang.String alias-ID="5" valueOf="XYZ"/>
</java.util.Hashtable>
</DataFeedMessage>

</msg>
</ns1:sendMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


(DataFeedMessage is the object i would to send)
But Tomcat (v4.0.4) reply with:

HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset=utf-8
Content-Length: 480
Date: Mon, 30 Sep 2002 18:00:05 GMT
Server: Java Web Services Developer Pack/1.0-ea1 (HTTP/1.1 Connector)
Set-Cookie: JSESSIONID=59FC124A77DF15420E03650C088E6259;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:Server.Exception:</faultcode>
<faultstring>org/apache/soap/util/xml/Serializer</faultstring>
<faultactor>/soap/servlet/rpcrouter</faultactor>
</SOAP-ENV:Fault>

</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

I think the problem are the namespaces ... maybe.
Someone can helpme?
Thanks! :)

Stefano Pedon



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