Saturday, January 5, 2008

Standardization Proposal for SOAP over JMS

Stefan Tilkov blogs about a Standardization Proposal for SOAP/JMS Binding by IBM, Sonic, TIBCO and BEA

In an email to the Apache Axis developers mailing list at apache.org, Sonic's Glen Daniels has announced that IBM, Sonic, TIBCO and BEA have creates a joint proposal for a standardized SOAP/JMS binding. SOAP over JMS is one of the possible choices for Web services-based reliable messaging, relying on a reliable transport instead of a SOAP-level reliability protocol such as WS-Reliable Messaging.
In the email, Glen writes:
As some of you may know, several companies (BEA, IBM, Progress, and TIBCO) have been working on a formal set of specifications for binding SOAP to the Java Message Service API. These specs consist of a) a SOAP binding, and b) a description of the "jms:" IRI scheme which is used for addressing. The specs do NOT cover an interoperable wire-level representation which could bridge different vendors' JMS implementations - though a future version might go there. This version has been designed so that plugging in a different implementation should work seamlessly without recompiling any code; as such we define a BytesMessage encapsulation of SOAP (and MTOM), a "Content-Type" JMS header, and a few other needed parts.
Here's an example of a WSDL file following the proposed specification:

<binding name="StockQuoteSoapJMSBinding" type="tns:StockQuotePortType" xmlns:soapjms="*placeholder*">
<wsdl11soap11:binding style="document"
transport="http://www.example.org/2006/06/soap/bindings/JMS/"/>

<!-- We want this binding to use a particular CF class -->
<soapjms:connectionFactoryName>
sample.jms.ConnectionFactory
</soapjms:connectionFactoryName>
<!-- Specify PERSISTENT delivery mode -->
<soapjms:deliveryMode>2</soapjms:deliveryMode>

<operation name="GetLastTradePrice">
<wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<wsdl11soap11:body use="literal"/>
</input>
<output>
<wsdl11soap11:body use="literal"/>
</output>
</operation>
</binding>

<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
<wsdl11soap11:address location="http://example.com/stockquote"/>
</port>
<port name="StockQuotePort_jms" binding="tns:StockQuoteSoapJMSBinding">
<wsdl11soap11:address location="jms:myQueue?targetService=stockquote"/>
</port>



InfoQ: Standardization Proposal for SOAP/JMS Binding



 



The email



From "Glen Daniels" <gdani...@progress.com>



Subject SOAP over JMS specifications



Date Fri, 12 Jan 2007 13:03:56 GMT



[apologies if you get this twice, it didn't seem to go through the first
time]

Hi Axis-Dev'ers:

As some of you may know, several companies (BEA, IBM, Progress, and
TIBCO) have been working on a formal set of specifications for binding
SOAP to the Java Message Service API. These specs consist of a) a SOAP
binding, and b) a description of the "jms:" IRI scheme which is used for
addressing. The specs do NOT cover an interoperable wire-level
representation which could bridge different vendors' JMS implementations
- though a future version might go there. This version has been
designed so that plugging in a different implementation should work
seamlessly without recompiling any code; as such we define a
BytesMessage encapsulation of SOAP (and MTOM), a "Content-Type" JMS
header, and a few other needed parts.

While this work has been progressing within the group up until now, we'd
like to announce that the specs are now at a point we feel is suitable
for public consumption. They are attached to this email, and please
feel free to discuss. It is our hope that the Axis community will be
among our first implementers, and that we can help to make SOAP-over-JMS
pluggability a reality.

If you'd like to give us technical feedback on the specs, we request
that you do two things - first, please send feedback to "soapjms" at
progress.com (not putting in a link due to potential spam issues).
Second, please include the following license text with the accept box
checked. This is purely to make sure we have the right to use any IP
you toss our way in future versions of the spec.

Thanks,
--Glen


--------------------------------------

Please be aware that you need to accept that any feedback you provide
will only be accepted if you indicate that you accept the terms of the
feedback license detailed below. Please include the Feedback license and
an indication of your acceptance using the following "I understand and
accept the terms of the above agreement." in any response that includes
feedback.

Feedback License

BEA Systems Inc., International Business Machines Corporation, Sonic
Software and TIBCO Software Inc. (the "Companies") are developing the
IRI Scheme for Java Message Service and SOAP over Java Message Service
specifications (the "Specifications"). The Companies would like to
receive input, suggestions and other feedback ("Feedback") on the
Specifications. By signing below, you (on behalf of yourself if you are
an individual and your company if you are providing Feedback on behalf
of the company) grant the Companies under all applicable intellectual
property rights owned or controlled by you or your company a
non-exclusive, non-transferable, worldwide, perpetual, irrevocable,
royalty-free license to use, disclose, copy, publish, license, modify,
sublicense or otherwise distribute and exploit Feedback you provide for
the purpose of developing and promoting the Specifications and in
connection with any product that implements and complies with the
Specifications.

You warrant to the best of your knowledge that you have rights to
provide this Feedback, and if you are providing Feedback on behalf of a
company, you warrant that you have the rights to provide Feedback on
behalf of your company. You also acknowledge that the Companies are not
required to incorporate your Feedback into any version of the
Specifications.