You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Jamie Tsao <jt...@atinera.com> on 2002/01/16 21:39:11 UTC

RE: Do I need a serializer ? (Messaging vs. RPC)

Thanks again Craig.
 
I was able to get it to work using LIteral Encoding, with a service signature of mySoapService(Element el).  It did NOT require a deserializer as I expected, so I guess my original question was answered.
 
But now I'm wondering whether RPC is what I should be using.  It seems that since my service is expecting a particular format of XML as the payload, then messaging is what I should be doing.  But since I've got it working using RPC, I'm inclined to just stick with it.
 
Here's a good article about this topic: http://www.learnxmlws.com/tutors/rpcmsg/rpcmsg.aspx
 
Are there any performance differences between messaging and RPC ?  Should I just stick with RPC ?
 
Thanks
 
 
-----Original Message-----
From: Wilkins, Craig [mailto:cwilkins@akamai.com]
Sent: Tuesday, January 15, 2002 9:58 AM
To: Jamie Tsao; 'soap-user@xml.apache.org'
Subject: RE: Do I need a serializer ?


You can still use SOAP RPC.  Just use Literal Encoding and have your SOAP Service have a signature of
 
mySoapService(Element el)
 
 
The deserializers are for when you have a SOAP Service with a signature of 
mySoapService(String myStr)
mySoapService(CompliantJavaBean myBean)
etc.
 
with these, you use soap encoding and not Literal encoding.  
 
Just because the SOAP message on the wire is in XML doesn't mean that your client and server application code has to pass and parse XML.  The APIs abstract this with deserializers and serializers.
 
Craig
 
 
 

-----Original Message-----
From: Jamie Tsao [mailto:jtsao@atinera.com]
Sent: Tuesday, January 15, 2002 12:51 PM
To: Wilkins, Craig; soap-user@xml.apache.org
Subject: RE: Do I need a serializer ?


It sounds like perhaps I should be doing soap messaging as opposed to soap rpc.  i would like to use rpc since it seems easier.  i guess i'm still confused about the role of deserialization.  do you only deserialize when the client has serialized the message ?  it just seems to me that if the message is being sent as raw xml, then when i get the message, i would only need to grab the relevent xml stuff out (<xml stuff here> from my last email) using either DOM or JDOM.  
 
i'm looking at examples from apache, and it seems that the deserialization code has lines like:
 
 Bean paramBean = xjmr.unmarshall(inScopeEncStyle,  RPCConstants.Q_ELEM_PARAMETER,  tempEl, ctx);
 
But what is this line actually doing ?  Why do it ?  Don't I just take the xml elements out as is ??  How do I get access to the xml once I'm in my service method ?
 
i know i'm missing something crucial here, and i just need somebody to tell me what it is.  
 
Thanks.
 
-----Original Message-----
From: Wilkins, Craig [mailto:cwilkins@akamai.com]
Sent: Monday, January 14, 2002 2:52 PM
To: Jamie Tsao; 'soap-user@xml.apache.org'
Subject: RE: Do I need a serializer ?


 
You can use the TCP Tunnel to get an idea of what the SOAP Message should look like.  You'll have to write a client first, but you'll probably have to do this to test your SOAP Service.  The TCP Tunnel will show you what the SOAP Message looks like.
 
When you ask "How does a client put an xml message inside a soap message so that my service can use it ?".  Is your SOAP Service accepting an XML parameter?  If so, is it going to be XML String or XML DOM?
 
 
 



 -----Original Message-----
From: Jamie Tsao [mailto:jtsao@atinera.com]
Sent: Monday, January 14, 2002 4:54 PM
To: soap-user@xml.apache.org; cwilkins@akamai.com
Subject: RE: Do I need a serializer ?



Thanks Craig for your response.
 
I do realize that the SOAP API automatically constructs the soap message as long as I use the API calls.  Unfortunately in my particular situation, I'm only writing the a SOAP service over HTTP (using the router servlet).  I'm not writing the client.  Any client that wants to use this has to construct the soap xml message (they are not using the SOAP API to construct the message), and send a POST to the specified URL.  Am I approaching this the wrong way ?  
 
How does a client put an xml message inside a soap message so that my service can use it ?
 
something like this...
 
<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>
        <xml stuff here>    
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 
In this situation, it seems that I don't need to deserialize.  I just need to take the XML out of the request, and process it as need be.
 
 
 
 
-----Original Message-----
From: Wilkins, Craig [mailto:cwilkins@akamai.com]
Sent: Monday, January 14, 2002 1:26 PM
To: 'soap-user@xml.apache.org'
Subject: RE: Do I need a serializer ?


Writing your own Serializers comes down to the data types of the parameters to your SOAP Service.  
 
Don't confuse the fact that SOAP messages are in XML with the data types of the parameters that you can pass to your SOAP Service.  The SOAP API is there so you don't have to worry about the format of the SOAP message and all of the XML parsing that is involved.  You just specify the SOAP Service, create some parameter(s) and the SOAP API will contruct a SOAP Message to pass to your SOAP Server to process.
 
The serializers that come with Apache SOAP allow you to pass all sorts of data types to your SOAP Service.  The deserializers enable your SOAP Server to convert the parameters in the SOAP XML Message back into native data types for your SOAP Service to process.  The opposite is true on the SOAP reply.
 
You can pass XML as the data type of parameters in SOAP Messages.  To do so, you will need to use Literal Encoding.  This works particularly good when the parameters to your SOAP Service are very complex.  For instance, you input is a Car, but your Car contains an Engine which has all sorts of complex parts, etc.
 
 
 
 
 
 
 
 
 -----Original Message-----
From: Jamie Tsao [mailto:jtsao@atinera.com]
Sent: Monday, January 14, 2002 3:22 PM
To: soap-user@xml.apache.org
Subject: Do I need a serializer ?






I'm a beginner with SOAP, and have been reading a lot of documentation on it.  I'm a bit confused about whether or not I need a serializer.

What I'm trying to build: 

I want to use the RPC router servlet to provide a SOAP interface to our existing platform.  Outside clients would make requests to our platform by sending XML request messages (in SOAP format).  They would receive responses also in XML.

So I basically need to take the XML message, grab the data out and instantiate a bean to pass into our existing business objects.  Is this what the deserializer is meant for ?  It doesn't seem like it.  The code that does this seems very specific to the particular format of the XML message, and seems more like DOM work to me.  When I get the response back from the business object, I have to take the data out of the javabean, and construct an XML message to be sent back to the client.  This once agains seems very specific, and NOT serializer work.

If I'm right in my assumptions, do I need a serializer/deserializer then ?? 

Thanks for any help.