- From: Eric Johnson <eric@tibco.com>
- Date: Tue, 07 Oct 2008 15:01:03 -0700
- To: Phil Adams <phil_adams@us.ibm.com>
- CC: public-soap-jms@w3.org
Hi Phil,
Phil Adams wrote:
>
> I agree with Eric that targetService should be only in the SOAP/JMS
> binding spec and that it should be specified in the endpoint location
> URI and not in the WSDL (other than the port's soap:address "location"
> attribute).
>
> There's something that I've been curious about for a while... In an
> HTTP endpoint location URI, the url pattern (i.e. the part after the
> context root - http://myhost:80/MyContextRoot/
> <http://myhost/MyContextRoot/>*services/MyServicePort*) is used to
> identify the port component that the request is intended for. Within
> the JMS endpoint location URI, the targetService property serves the
> same purpose (more or less) as the url pattern in the HTTP case, but yet
> the targetService property is optional in the URI. I'm not suggesting
> that we make it required or anything. I guess I'm just curious how a
> particular vendor runtime would be able to determine which port
> component the request is intended for if the targetService property is
> not specified? I know this was something that I struggled with when
> implementing SOAP over JMS in our WebSphere product. Of course, if I
> want to put in place a restriction that only one port component is
> allowed per application module, then it's not an issue, but that
> restriction would be absurd :)
>
> Does anyone have an idea how the request could be properly targetted to
> the correct port component *without* specifying the targetService property?
>
At least in theory, there are a wide variety of techniques for
dispatching SOAP requests, some of which depend on the type of SOAP
binding in use. Some examples:
* Look at the "action" (SOAP 1.2) or "soapAction" (SOAP 1.1) value - it
may be unique across the services at a given endpoint.
* Examine the child element of the SOAP Body element. If you're using
RPC/lit binding, this will tell you the operation name, and probably as
a consequence the service.
* (Proprietary) Expected SOAP message headers
* WS-Addressing message properties - wsa:To, for example
* non-SOAP transport properties - such as custom defined JMS headers,
or requesting host IP address or DNS name (for HTTP SOAP)
In my opinion, the dispatch problem is both a "feature", and a "bug" of
SOAP. It is a "feature" in that it has left a problem that cannot be
solved in the abstract to a higher level. It is possibly a bug in that
if SOAP just mandated a particular (narrow) approach, it might
ironically have made everything downstream of that easier, and thus made
SOAP more inter-operable.
-Eric.
> Phil Adams
> WebSphere Development - Web Services
> IBM Austin, TX
> email: phil_adams@us.ibm.com
> office: (512) 838-6702 (tie-line 678-6702)
> mobile: (512) 750-6599
>
>
>
> From: Eric Johnson <eric@tibco.com>
> To: Peter Easton <peaston@progress.com>
> Cc: public-soap-jms@w3.org
> Date: 10/07/2008 03:38 PM
> Subject: Re: Spec anomalies on targetService ?
>
>
> ------------------------------------------------------------------------
>
>
>
>
> Hi Peter,
>
> Curious. From my perspective, the specification is correct.
>
> Peter Easton wrote:
>> Just so we can track this separately.
>>
>>
>>
>> I noticed going through the binding spec that Section 2.2.3 notes that
>> soapjms:targetService is marked “optional in IRI”. If I recall Eric’s
>> conversations correctly, I believe that this is intended a WSDL only
>> extension. The IRI spec does not mention the targetService, so something
>> is at least inconsistent.
>>
>
> Perhaps my statement was unclear, but what I was trying to say is that
> targetService is specific to the SOAP/JMS binding spec. It is not
> intended as a WSDL extension, but is only intended for placement in the URI.
>
> It exists to provide a corollary to HTTP URLs. For a somewhat strained
> analogy Imagine a servlet container is hosting a web application.
> Within that level, there may be one or more servlet endpoints that are
> capturing URLs within the context of that web app. Within that servlet,
> there may be additional discrimination based on the URL. That is, to a
> J2EE web application, the URL (somewhat simplistically) logically breaks
> down like:
>
> ${host}/${webapp_ctx}/${servlet_path}/${service}
>
> With my somewhat strained JMS analogy, supposing a service listens on a
> queue - the logical view of the queue looks like:
>
> ${queue}
>
> To restore some ability to share the same endpoint for multiple
> services, we add the targetService back in, and now the logical view of
> the URL looks like:
>
> ${queue}?targetService=${service}
>
>
>>
>>
>> Also note that targetService is missing from the list of WSDL extensions
>> in 3.6.
>>
>
> I don't believe it is "missing", since I don't think it is supposed to
> be there.
>
> -Eric.
>
>
>
>
Received on Tuesday, 7 October 2008 22:01:41 UTC