Slight clarification from TIBCO's perspective. The "targetService" portion of the URI is there to provide further dispatching information. One of our key use-cases involves making it as simple as changing the URI for an existing SOAP/HTTP service, and having it work in a JMS world. Because of the differences between JMS world and the HTTP world in how they handle messages, on the JMS side we added the "targetService" piece as an additional discriminator for delivering messages to the correct services - for example, if multiple services happen to be listening on the same queue, this gives the dispatch logic a way to distinguish which service should receive the request.
2) The "targetService" property in the endpoint location URI is used to specify the name of the port component that is the target of the request on the server. This value is used by the server to determine which web service implementation class is used (among other things). In practice, the port component name is sometimes (or even often times) the same as the WSDL port name, but it doesn't need to be the same. The port component name must be unique within the application module (EJB jar, WAR file, etc.) in which it is contained. To determine what value you should use for this on the client, you'll need to inspect the service to see what the port component name is. This is part of the JSR 109 deployment model. If, on the other hand, you're not using or concerned with a Java EE compliant runtime, then you can likely omit the targetService property from the endpoint location URI.
From: <Sanjeev_Dokiburra@ibi.com> To: Phil Adams/Austin/IBM@IBMUS Cc: <firstname.lastname@example.org>, <email@example.com> Date: 11/25/2008 07:57 AM Subject: RE: SOAP over JMS
Thank you very much for prompt response. Those are the points that I am looking for. Appreciate your time in clarifying my questions. For further understanding, would you mind helping with following questions ?
1. Can you please provide jms action snippet equivalent for below(http coincidence is little confusing me):
2. Can I have port name & targetservice with same name as below ?
<wsdl11:port name="stockquote" binding="tns:StockQuoteSoapJMSBinding">
From: Phil Adams [mailto:firstname.lastname@example.org]
Sent: Monday, November 24, 2008 9:42 PM
To: Dokiburra, Sanjeev
Cc: email@example.com; firstname.lastname@example.org
Subject: RE: SOAP over JMS
The fact that the soap action value "looks" like an HTTP url is just a coincidence. It doesn't mean that it is related to the HTTP transport per se. The soap action value is simply an identifier for the intended action (e.g. operation).
As for your second question, I assume you're referring to this from section 3.4.1 of the binding spec:
40 <wsdl11:port name="StockQuotePort_jms" binding="tns:StockQuoteSoapJMSBinding">
41 <wsdl11soap11:address location="jms:jndi:myQueue?targetService=stockquote"/>
In this example, the targetService property indicates the name of the port component which is the target of the request.
From: <Sanjeev_Dokiburra@ibi.com> To: Phil Adams/Austin/IBM@IBMUS Cc: <email@example.com>, <firstname.lastname@example.org> Date: 11/24/2008 04:34 PM Subject: RE: SOAP over JMS
I would be glad if someone from the group could answer below questions.
1) I am wondering about the presence of http in SOAP Action attribute. For JMS transport, do we need to have http action ?
25 <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
2) What does last parameter (after ?) in address location stands for ?
Thanks & Rgds,