Hi Anne, all:
Axis is NOT by default a BP-compliant engine. I'm all for having a switch to indicate BP compliance, but the world is way bigger than the limitations imposed by BP (for instance, we're going to support RPC encoding too).
Using unique <Body> child elements as dispatch is certainly one way to do it. But Axis has been designed from the get-go to allow flexibility for these sorts of things - as long as SOMEONE along the processing chain sets the service/operation by the time the Dispatch phase is complete, it doesn't matter that it happened in any particular way. We should certainly provide good defaults for this sort of thing, but the point is that a given deployer should be able to make sure her particular system works the way she needs by deploying handlers in particular ways, and we shouldn't limit her choices (of which using action is a perfectly acceptable one, for instance).
Thanks, --Glen
Anne Thomas Manes wrote:
Per the WS-I BP, in SOAP 1.1, the child element of the SOAP body must supply a unique signature (for both RPC and Document styles) and it should always be used to determine what's being requested. SOAP Action is merely a processing hint, and it should not be used to determine processing action:
R1127 A RECEIVER MUST NOT rely on the value of the SOAPAction HTTP header to correctly process the message.
and
4.7.6 Operation Signatures
Definition: operation signature
The profile defines the "operation signature" to be the fully qualified name of the child element of SOAP body of the SOAP input message described by an operation in a WSDL binding.
In the case of rpc-literal binding, the operation name is used as a wrapper for the part accessors. In the document-literal case, since a wrapper with the operation name is not present, the message signatures must be correctly designed so that they meet this requirement.
An endpoint that supports multiple operations must unambiguously identify the operation being invoked based on the input message that it receives. This is only possible if all the operations specified in the wsdl:binding associated with an endpoint have a unique operation signature.
R2710 The operations in a wsdl:binding in a DESCRIPTION MUST result in operation signatures that are different from one another.
On Thu, 17 Mar 2005 17:57:18 +0600, Chathura Herath <[EMAIL PROTECTED]> wrote:
Are you sure, I'm not so sure about that. I am referring to the fact that op name must be taken from SOAP message. Anyway if it's a must the WSDL2.0 WG guys missed something. ;-) Have to check on it.
Thanks
Chathura
-----Original Message----- From: Srinath Perera [mailto:[EMAIL PROTECTED] Sent: Thursday, March 17, 2005 5:29 PM To: [email protected] Subject: Re: [Axis2] REQUEST_URI in mail transport
if it is rpc u r suppose to get the opertion name from the SOAP message and AFAIK it is a must. So we are in trouble and the fact SOAP action does not null do not mean anyhting.
still it is Oops ? thanks Srinath
On Thu, 17 Mar 2005 17:06:05 +0600, Chathura Herath <[EMAIL PROTECTED]> wrote:
Hang on... No ooops there still. We can look at the SOAPAction in each case (both rpc and document).
If(null != SOAPAction){ Get the operation from SOAPAction(for both rpc and document) } else{ Assume rpc and get the operation form the SOAPBody.
Now if the style is document.. Now definitely you have an ooops there and you can't do anything(simply throw exception). }
Anyway what I have said was what is there in the spec(Should mention
there
is a notion of a default style in the PortType/Interface, but the
problem is
far from gone).
Comments??
Chathura
-----Original Message----- From: Srinath Perera [mailto:[EMAIL PROTECTED] Sent: Thursday, March 17, 2005 4:46 PM To: [email protected] Subject: Re: [Axis2] REQUEST_URI in mail transport
if we do not know the style until operation is found and to find the OPEARATION we need STYLE. (e.g. in the rpc case we found the opearion from the SOAP message .. if you need opearion to found the style then ooops ...., how the hell we know should we peek in to the SOAP message or not )
This is a checken and egg problem ...I strongly belive somehow we have get it all wrong hope somebody enligten us on it !
Thanks Srinath
On Thu, 17 Mar 2005 16:17:17 +0600, Chathura Herath <[EMAIL PROTECTED]> wrote:
HI, Ok the first problem was to get the SOAP action over this particular transport. That's not a big issue, personally think we should agree
to
one
format. The SOAP Action is another new issue and as Srinath said we should
decide
which one gets precedence in the event of the getting the operation.
Now regarding the operation discovery.
I think the SOAPAction should get the precedence over all. The
reason to
do
that is you don't know the style until you know the operation. In
WSDL
2.0
the operation is the owner of the Style attribute(not the Interface/Porttype) In the algorithm that Srinath wrote down, there is no way to know
the
style
before identifying the operation so it cant work.
Comments??
Chathura
-----Original Message----- From: Ajith Ranabahu [mailto:[EMAIL PROTECTED] Sent: Thursday, March 17, 2005 3:55 PM To: [email protected]; Srinath Perera Subject: Re: [Axis2] REQUEST_URI in mail transport
Hi, Yes I agree that this is a broader issue than just the SOAPAction.
The
algorithm you suggest seems to be fair enough for service
resolution.
However I suppose we should look more into what others are doing (afterall its not only axis that is there in the world :)) and
decide
the alternate branches of our service/operation resolution
algorithm
depending on that.
On Thu, 17 Mar 2005 15:42:04 +0600, Srinath Perera
<[EMAIL PROTECTED]>
wrote:
Let me extend the Q bit .. as it is not only the SMTP that bring
the
Q
At the web services we need to identify two things 1) Service Name 2) Operation name
to obtain the information we have the following 1) To address, (if the address not presents the request URI for
HTTP
and the mail address for the SMTP case ) 2) SOAP actions 3) if rpc-* or doc-literal-wrapped from the SOAP message
we want to handle this for (at least) SMTP & HTTP each of these can have a separator to have two information. I
purpose
the following algorithm to
1 try to get the service name from the To address.. that is
basically
find string $A in the To address that Marches the patters */services/$A 2.1 if 1 is success, if (style == rpc || wrapped){ find the operation from the Envelope } if(style == doc){ pick the operation name from the SOAPAction } 2.2. if 1failed, try to pick up the service from the SOAP
action.
Then
the style must be rpc or doc literal wrapped as no way to find operation
Does the algorithm is fair enough?
few issues are 1) do we need escape characters in the to addess or the
SOAPAction
to
let one entry have two information? 2) Are going to use the things like NSURI of the firat element
to
locate service/operation 3) do we need configuration support to change the order of the
things
taking the precedence.
thoughts Srinath
On Thu, 17 Mar 2005 14:54:52 +0600, Chamil Thanthrimudalige <[EMAIL PROTECTED]> wrote:
hi all,
Well let me start by telling how I have setup the mail
transport
code
for the time being. [Currently working on a maillet that can
work
with
James.]
There is a poling thread that listens to a specified mail
address
and
when a mail comes to that address it will be fetched; broken
down;
MC
made and this MC will be used to call the engine.receive(MC)
method.
My problem is that since it is required to set a REQUEST_URI
(which
will
be used to find out the service that should be called) before
calling
engine.receive(MC), what can I use to set this?
Using the email address might cause a problem because then for
different
services the mail listener will have to listen to many email
address.
Before the current change I set the service using a value
stored
on
the
mail header.
Best Regards, Chamil Thanthrimudalige.
-- Ajith Ranabahu
