axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rai...@wonko.inow.com
Subject RE: RPC vs. building your own SOAP messages
Date Sat, 02 Oct 2004 13:11:18 GMT
Thanks Anne!

I guess in the example below I could just surround the whole series of
tags with a "wrapper" tag, so that I can avoid the attributes on the top
level.  (Like put the example below inside a <body>  </body> tag.)

Anyhow, thank you for your assistance with this!

-Raiden Johnson



On Sat, 2 Oct 2004, Anne Thomas Manes wrote:

> Attributes are mapped to properties.
>
> The wrapped style doesn't permit attributes at the top level (no complex
> content in the wrapper element). The wrapper element must be defined as a
> type comprising a sequence of elements. But these elements within the
> wrapper element may contain attributes.
>
> In a situation where you require attributes at the top level, then you must
> use either "document" style or "message" style. With "document" style, Axis
> maps the entire contents of the SOAP body to a Java object. With "message"
> style, Axis maps the contents to a DOM.
>
> Anne
>
> -----Original Message-----
> From: raiden@wonko.inow.com [mailto:raiden@wonko.inow.com]
> Sent: Friday, October 01, 2004 7:49 PM
> To: axis-user@ws.apache.org
> Subject: RE: RPC vs. building your own SOAP messages
>
> Ok, that makes sense.  And Axis' "wrapped" style will support nested tags
> by creating nested Java objects?
>
> If so, how does it handle attributes that are on tags?  Like:
> <member type="1">
>   <name>
>     <firstname>john</firstname>
>     <lastname> doe</name>
>   </name>
>   <age>24</age>
> </member>
>
> I would imagine that the "wrapped" style would create a Member object that
> has an age, but also contains a Name object.  And then the Name object
> contains the firstname and lastname.
>
> But, how would it represent the "type=1" in the java objects?  (Assuming
> I'm right about how it would represent the nested objects.)
>
> Thank you for your help!  Axis is very exciting... I wish I had converted
> over sooner.
>
> -Raiden Johnson
>
>
>
>
> On Fri, 1 Oct 2004, Anne Thomas Manes wrote:
>
> > As a rule of thumb, you should use the Axis "wrapped" style. (Sometimes
> you
> > can't, but the example you cite below is fine.) The "wrapped" generates
> > document/literal messages, and it manages the message building process for
> > you. Axis automatically maps the XML message to Java objects based on the
> > schema of the message. When developing a "wrapped" style service, you
> should
> > start by defining the XML schema of your input and output messages.
> >
> > Anne
> >
> > -----Original Message-----
> > From: raiden@wonko.inow.com [mailto:raiden@wonko.inow.com]
> > Sent: Friday, October 01, 2004 10:39 AM
> > To: axis-user@ws.apache.org
> > Subject: RPC vs. building your own SOAP messages
> >
> > Hello,
> >
> > I am having a hard time grasping when to use RPC calls and when to build
> > your own messages.  I used to use Apache SOAP, and I used to build my own
> > SOAP message via JAXM.
> >
> > However, I am now trying to upgrade to AXIS, and to make full use of its
> > feature set... which seems to have a huge emphasis on using RPC, and
> > seems to abstract out message building.
> >
> > Every guide and tutorial that I have read seems to revolve around RPC, and
> > how easy it is to implement in AXIS.  I can see the benefits of RPC for
> > simple calls (pass in a few arguments, get back a single result... even
> > if the result is a complex type).  RPC seems great for that.
> >
> > However, I need to pass much more complex messages, and receive much more
> > complex results.  Does that mean that RPC is not the best solution for me?
> >
> > For example, here is a typical message that I will send to a SOAP server:
> >
> > <soap-env:Envelope
> > xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
> > <soap-env:Header>
> > <t:Transaction xmlns:t="xxs">
> >   <iden u="user" p="password"/>
> > </t:Transaction>
> > </soap-env:Header>
> > <soap-env:Body>
> > <ns1:ProviderTransaction xmlns:ns1="xxs">
> > <REQ>
> >   <action entryDate="20040919">1</action>
> >   <memberInfo nvid="1234567">
> >     <externalID>4001775</externalID>
> >     <name><first>Maggie</first><last>Duke</last></name>
> >     <companyName/>
> >     <address>123 Test St.</address>
> >     <address2/>
> >     <city>City</city>
> >     <state>CT</state>
> >     <country>US</country>
> >     <postalCode>06524</postalCode>
> >     <email>test@test.com</email>
> >     <ssn></ssn>
> >   </memberInfo>
> >   <orderInfo>
> >     <effectiveDate>20040928</effectiveDate>
> >     <items count="2">
> >       <item><itc>2973</itc><qty>1</qty><pc>Y</pc></item>
> >       <item><itc>1234</itc><qty>1</qty><pc>Y</pc></item>
> >     </items>
> >   </orderInfo>
> > </REQ>
> > </ns1:ProviderTransaction>
> > </soap-env:Body><
> > /soap-env:Envelope>
> >
> >
> > and here is a typical response:
> >
> >
> > <SOAP-ENV:Envelope
> > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > xmlns:xsd="http://www.w3.org/1999/XMLSchema/"
> > xmlns:xsi="http://www.w3.org/1999/XMLSchema/instance/">
> > <SOAP-ENV:Header>
> > <t:Transaction xmlns:t="xxs" />
> > </SOAP-ENV:Header>
> > <SOAP-ENV:Body>
> > <ns1:ProviderTransaction xmlns:ns1="xxs">
> > <RSP>
> > <responseNode>
> >   <nvid new="1">863262802</nvid>
> >   <orderNumber>9136214</orderNumber>
> >   <asOrderNumber>961704</asOrderNumber>
> > </responseNode>
> > </RSP>
> > </ns1:ProviderTransaction>
> > </SOAP-ENV:Body>
> > </SOAP-ENV:Envelope>
> >
> >
> > Are complex SOAP packets like these not appropriate for RPC?  It seems to
> > me, like you really need to build your own requests, and parse your own
> > responses to make something like this work.  Am I correct in that?
> >
> > Thank you,
> > -Raiden Johnson
> >
>

Mime
View raw message