- 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