Thanks for the responses. This clears up things but leaves a few question: Namely, how do URIs such as http://schemas.xmlsoap.org/soap/actor/next and http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver resolve to actual services on a web service path? To quote you: "... if the value of the URI is http://schemas.xmlsoap.org/soap/actor/next, then whatever entity next receives the message should process the header." How is it decided what service .../next or .../ultimateReceiver corresponds to? Is this handled in WS-Addressing? How do the role definitions in a web service's wsdd deployment come into play? Sorry for the deluge of questions  ;)
 
Mike


From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: Friday, September 16, 2005 10:56 AM
To: [email protected]
Subject: Re: Stumped on web service intermediaries

You use soapenv:actor with SOAP 1.1 and soapenv:role with SOAP 1.2.

The value of the actor/role attribute is a URI that represents the role of the entity that must process the header in question. Per SOAP 1.1, if the value of the URI is http://schemas.xmlsoap.org/soap/actor/next, then whatever entity next receives the message should process the header. In SOAP 1.2, if the value of the URI is http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver, then only the ultimate receiver should process the header. The specs do not predefine any other URIs, so you should choose a name that reflects the intermediary role. The URI does not in any way indicate routing, nor does the URI indicate the endpoint of a particular intermediary or service.

In order for your intermediary to intercept the message, you must direct the message to the intermediary. You can do that by specifying the intermediary URL as the service endpoint in your WSDL (in which case your intermedairy must figure out how to forward the message to the appropriate service endpoint), or you can use WS-Addressing.

Anne

On 9/16/05, Ottinger, Michael <[EMAIL PROTECTED]> wrote:

Hi Folks

I've created a simple web service that I want to have act as an intermediary. In my client code I've added a header element to the requesting soap with a soapenv:role (also tried soapenv:actor) attribute value set to the url endpoint of my web service; no luck. I've read up on intermediaries as much as possible and I feel I'm missing something here. What does it take to target a soap message to an intermediary? How does an intermediary "intercept" a message? I also set the soapenv:role attribute value to a role uri I declared in the service's wsdd entry; no luck either. Does the service method in my interdiary need to follow a certain signature, or implement an interface? Finally, is there any sample code out there that could get me pointed in the right direction? Thanks in advance.

Mike Ottinger


Reply via email to