<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>All About Interop : JMS</title><link>http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx</link><description>Tags: JMS</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Weblogic JMS with .NET</title><link>http://blogs.msdn.com/dotnetinterop/archive/2008/10/09/weblogic-jms-with-net.aspx</link><pubDate>Thu, 09 Oct 2008 18:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8991973</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/8991973.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=8991973</wfw:commentRss><description>&lt;P&gt;This came out last month, I just learned about it from an email from&amp;nbsp;&lt;A class="" href="http://weblogs.asp.net/gsusx/default.aspx" mce_href="http://weblogs.asp.net/gsusx/default.aspx"&gt;Jesus&lt;/A&gt; today. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WebLogic Server 10gR3 now has &lt;A class="" href="http://edocs.bea.com/wls/docs103/jms_dotnet/overview.html" mce_href="http://edocs.bea.com/wls/docs103/jms_dotnet/overview.html"&gt;an officially-supported .NET client&lt;/A&gt; for its JMS provider&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;EM&gt;Very cool.&lt;/EM&gt;&amp;nbsp; Some of you might be wondering, &lt;EM&gt;just what does that mean?&amp;nbsp; &lt;/EM&gt;It means there is a queue mechanism in the WebLogic Server, for a long time this has been called "Weblogic JMS".&amp;nbsp; And you can connect to that queue subsystem&amp;nbsp;via .NET applications. James Bayer has a blog entry on it, which you should &lt;A class="" href="http://blogs.oracle.com/jamesbayer/2008/09/jms_with_net_weblogic_server_1.html" mce_href="http://blogs.oracle.com/jamesbayer/2008/09/jms_with_net_weblogic_server_1.html"&gt;check out&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;pet peeve alert!&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; Calling a queue "JMS" is strange and confusing.&amp;nbsp; It would be like calling the Oracle database "Oracle JDBC"&amp;nbsp;&amp;nbsp; or "Oracle ADO.NET".&amp;nbsp; Oracle Database is not the same as JDBC.&amp;nbsp; JDBC is an API.&amp;nbsp; ADO.NET is the name for an API.&amp;nbsp; The database is not the API.&amp;nbsp; The database (whether Oracle, Microsoft SQL Server, IBM DB2, or something else) exposes mutliple API families - some for Java, some for .NET languages, some for C and C++.&amp;nbsp; The programmatic interfaces are distinct from the implementation.&lt;/P&gt;
&lt;P&gt;With JMS, Sun and the Java guys have confused the issue.&amp;nbsp; Maybe even on purpose: remember back when JMS was conceived, Sun had aspirations to make Java itself &lt;EM&gt;a platform &lt;/EM&gt;- everything contained within Java as other things like the operating system and the database itself, and to the point, a messaging subsystem, recede into the background.&amp;nbsp; Well, that didn't really happen, despite the huge popularity of Java as a programming language.&amp;nbsp;&amp;nbsp; Operating systems still matter, databases still matter, message queues did not get subsumed into the programming language.&amp;nbsp; Java is a language and a VM and a base class library, but not a platform.&amp;nbsp;&amp;nbsp; Regardless, the side effect of Sun's unfulfilled platform aspirations for Java is that today, people call message and queue subsystems "JMS."&amp;nbsp;&amp;nbsp; Developers speak of JMS topics, JMS queues, JMS messages.&amp;nbsp; But it is clear: just as &lt;A class="" href="http://java.sun.com/javase/technologies/database/index.jsp" mce_href="http://java.sun.com/javase/technologies/database/index.jsp"&gt;JDBC is a Sun/Java&amp;nbsp;API for databases&lt;/A&gt;, &amp;nbsp;&lt;A class="" href="http://java.sun.com/products/jms/" mce_href="http://java.sun.com/products/jms/"&gt;JMS is a Java&amp;nbsp;API for Messaging subsystems&lt;/A&gt;.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;IBM has always been very clear about this with its &lt;A class="" href="http://ibm.com/software/mqseries" mce_href="http://ibm.com/software/mqseries"&gt;MQ product&lt;/A&gt;, later called MQSeries and then changed to "WebSphere MQ".&amp;nbsp;&amp;nbsp; (For this post I'll just call it &lt;STRONG&gt;MQ&lt;/STRONG&gt;.)&amp;nbsp;&amp;nbsp; MQ is the implementation, and MQ exposes a bunch of different APIs - for C, for .NET, for Java, and I'm sure, for other languages.&amp;nbsp; In what looks like a bit of schizophrenia, IBM also has &lt;A class="" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.express.doc/info/exp/ae/ucli_ovrvw.html#ucli_ovrvw" mce_href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.express.doc/info/exp/ae/ucli_ovrvw.html#ucli_ovrvw"&gt;message service within WebSphere Application Server&lt;/A&gt;, which is called WebSphere JMS if I am not mistaken, and which... you guessed it, exposes more than just a JMS programming interface.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For some reason, the queue infrastructure&amp;nbsp;for&amp;nbsp;&lt;EM&gt;some &lt;/EM&gt;products has been called "JMS" as if that is the only API that has ever mattered.&amp;nbsp; Seems like a result of shortsighted and wrongheaded product planning to me.&amp;nbsp; And it's darned confusing, to boot.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A separate issue is that JMS is not merely an API!&amp;nbsp; JMS actually injects some&amp;nbsp;message protocol&amp;nbsp;behavior, specifically the RFH2 header formatting stuff, which makes for tricky interop with other, non-Java applications through queue subsystems.&amp;nbsp; Designing JMS this way presented a big, unnecessary obstacle to interop, and &lt;A class="" href="http://blogs.msdn.com/dotnetinterop/search.aspx?q=JMS&amp;amp;p=1" mce_href="http://blogs.msdn.com/dotnetinterop/search.aspx?q=JMS&amp;amp;p=1"&gt;I've blogged on it previously&lt;/A&gt;.&amp;nbsp;&amp;nbsp; IBM has had to introduce &lt;A class="" href="http://www.ibm.com/developerworks/websphere/library/techarticles/0509_phillips/0509_phillips.html" mce_href="http://www.ibm.com/developerworks/websphere/library/techarticles/0509_phillips/0509_phillips.html"&gt;new APIs&lt;/A&gt; for MQ and its other queue subsystems, specifically to work around this interop barrier.&amp;nbsp; I don't know a better way to solve it, than the way IBM did.&amp;nbsp; But make a note to yourself - if you ever design a queue system or queue API, keep the API separate from the application protocol and message formatting. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Check it out!&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8991973" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/WebLogic/default.aspx">WebLogic</category></item><item><title>JMS Adapters for .NET &amp;amp; BizTalk</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/11/16/jms-adapters-for-net-biztalk.aspx</link><pubDate>Fri, 16 Nov 2007 19:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6286359</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/6286359.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=6286359</wfw:commentRss><description>&lt;P&gt;Love it!&amp;nbsp; &lt;A class="" href="http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/jnbridge-jms-adapter-beta.aspx" mce_href="http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/jnbridge-jms-adapter-beta.aspx"&gt;I previously posted about a beta&lt;/A&gt; of the JNBridge JMS Adapters.&amp;nbsp; I just got a form&amp;nbsp;email from the company that they've publicly released their adapters.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There's a version of the adpater for .NET apps - this allows any .NET app to connect to any JMS resource.&amp;nbsp; Think about that.&amp;nbsp; It's really useful.&amp;nbsp; If you have an IBM MQSeries queue, and you're using IBM's MQ JMS&amp;nbsp;provider to get to it, you can use this new adapter to enable any .NET application to get to the same JMS resource.&amp;nbsp;&amp;nbsp;The thing is&amp;nbsp;based on the &lt;A class="" href="http://blogs.msdn.com/dotnetinterop/archive/2007/09/12/wcf-line-of-business-adapter-sdk.aspx" mce_href="http://blogs.msdn.com/dotnetinterop/archive/2007/09/12/wcf-line-of-business-adapter-sdk.aspx"&gt;WCF Line-of-Business Adapter SDK&lt;/A&gt;, which means any .NET application that can consume a WCF endpoint, can use the adapter. &lt;/P&gt;
&lt;P&gt;There's a similar adapter that works for BizTalk Server applications, but it is not WCF-based. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;These adapters work with any JMS server, and you don't have to change the JMS infrastructure to use them. They both use the .NET-to-Java bridging magic in JNBridgePro, so&amp;nbsp;the .NET app actually connects into the JMS system via the JMS jars.&amp;nbsp; That's why you don't have to change anything.&lt;/P&gt;
&lt;P&gt;You can download a trial version on &lt;A href="http://www.jnbridge.com/"&gt;www.jnbridge.com&lt;/A&gt;. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6286359" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>The SOAP-over-JMS spec and interop</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/07/24/the-soap-over-jms-spec-and-interop.aspx</link><pubDate>Tue, 24 Jul 2007 17:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3999232</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/3999232.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=3999232</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;In a &lt;A class="" href="http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/custom-wcf-channel-for-ibm-mq.aspx" mce_href="http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/custom-wcf-channel-for-ibm-mq.aspx"&gt;previous post&lt;/A&gt;, I wrote about a WCF Channel for MQ that IBM is building.&amp;nbsp; Some customers had asked about this project and its implementation, specifically around the interop implications if other JMS providers, other than MQ that is, were used in an environment. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;To be clear the WCF Channel for MQ is ... how can I put this?&amp;nbsp; &lt;STRONG&gt;for MQ&lt;/STRONG&gt;.&amp;nbsp; It is not an approach that particularly facilitates&amp;nbsp;interop among JMS providers.&amp;nbsp; That would best be addressed by&amp;nbsp;a spec that focuses at a different level, say &lt;A class="" href="http://www.amqp.org/" mce_href="http://www.amqp.org/"&gt;AMQP&lt;/A&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;AMQP as I understand it, is a queue-to-queue protocol that would facilitate interop between queue providers, and I believe that would be true whether or not a JMS API was used to access it.&amp;nbsp; In general the goals of AMQP are valuable when they are API-agnostic.&amp;nbsp; Heterogeneity anyone? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The&amp;nbsp;WCF&amp;nbsp;Channel fo MQ does&amp;nbsp;provide interop, but to a particular limited degree:&amp;nbsp;it is interop between endpoints in a messaging network that all use MQ.&amp;nbsp; .NET to CICS, .NET to WebSphere, C++-running-on-AIX &amp;nbsp;to .NET-on-Windows, and so on.&amp;nbsp; WCF isn't available on all the various IBM platforms, so how does the interop work?&amp;nbsp; It happens because IBM is using the same message format on the queue, from all those endpoints.&amp;nbsp; &lt;SPAN style="COLOR: red; FONT-STYLE: italic"&gt;[added 30 July 2007 215pm Pacific] In fact as I understand it, that is the point of the WCF Channel for MQ: the programming model at the different endpoints varies, but interop among those endpoints is still possible.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;There is a related spec effort in this space - the &lt;A class="" href="http://www.infoq.com/news/2007/01/soap-jmi-standard" mce_href="http://www.infoq.com/news/2007/01/soap-jmi-standard"&gt;SOAP-over-JMS proposal&lt;/A&gt;.&amp;nbsp; The message encoding IBM uses is NOT SOAP-over-JMS.&amp;nbsp; Why?&amp;nbsp; Because SOAP-over-JMS is an idea, not a real specification yet, let alone a standard one.&amp;nbsp;&amp;nbsp; Thinking a bit more about this, it doesn't matter very much that the WCF channel for MQ does not currently use a &lt;B&gt;standard&lt;/B&gt; encoding, as long as the encoding is &lt;B&gt;consistent&lt;/B&gt; across the endpoints that need to exchange messages. &amp;nbsp;That is to say, consistent among CTS, a Websphere EJB (MDB), a Websphere JMS app, and the WCF app, etc.&amp;nbsp;&lt;/SPAN&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;If and when finalized and adopted, the SOAP-over-JMS spec aims to allow heterogeneous web services stacks (AXIS, Sun JWSDP, Websphere’s built-in, etc) to interop.&amp;nbsp; But still, &lt;EM&gt;this assumes that there is a single JMS provider&lt;/EM&gt;.&amp;nbsp; The SOAP-over-JMS stack provides interop among web services stacks using a single JMS provider;&amp;nbsp; it does not provide interop among JMS providers. For that you would be&amp;nbsp;looking at something like a point-to-point bridge or to AMQP. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;What are your thoughts on this?&amp;nbsp; How much interest is there in AMQP?&amp;nbsp;Drop me a line.&lt;/SPAN&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3999232" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>JNBridge JMS Adapter Beta</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/jnbridge-jms-adapter-beta.aspx</link><pubDate>Tue, 17 Jul 2007 01:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3902493</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/3902493.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=3902493</wfw:commentRss><description>&lt;P&gt;I see JNBridge has a public beta now for their JMS Adapters for .NET. I haven't tried this out, but Wayne tells me that &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;with the JNBridgePro JMS adapters, you can access JMS Services from a wide variety of systems. A MOSS 2007 app could connect to a JMS resource. A business process running in BizTalk Server could connect to JMS. Anything that can consume a WCF endpoint. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Thw way it works: your .NET app calls into the Adapter, which just looks like a .NET assembly. Through the .NET-to-Java bridging magic of JNBridgePro, that assembly calls the Java-based JMS client classes provided by the vendor of the JMS provider (let's say, Sonic or IBM or WebLogic). From that point on, it is just as if you were calling into the JMS resource from a Java application. At that point, there is a message on the JMS-accessible queue, and it can be picked up by whatever mechanism the JMS provider enables - pub/sub, or an EJB Message Driven Bean, etc. Communication going "the other way" - from Java to .NET - would work similarly. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.jnbridge.com/adapter/index.htm" mce_href="http://www.jnbridge.com/adapter/index.htm"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Check it out&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;. &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3902493" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>Custom WCF Channel for IBM MQ</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/07/16/custom-wcf-channel-for-ibm-mq.aspx</link><pubDate>Mon, 16 Jul 2007 21:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3899301</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/3899301.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=3899301</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;IBM have shipped an early version of a Custom WCF Channel for MQ. &amp;nbsp;The dev team in Hursley contacted me to solicit feedback. It's apparently pretty simple now, supporting only SOAP one-way messaging, but they say if there is sufficient interest and feedback, they will consider developing it further and perhaps adding it to the MQ product (as they did with the MQ Classes for .NET, and other stuff). &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Out of the box, WCF includes support for queued transport, over MSMQ, which is the Microsoft Message Queue, built-into Windows. This is available in the NetMsmqBinding. You can read more about it &lt;A href="http://msdn2.microsoft.com/en-us/library/ms789048.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms789048.aspx"&gt;here&lt;/A&gt;. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;What our friends at IBM are doing is similar, but different in a very important way: In the IBM channel, messages are encoded and sent via the message queue, just as with the NetMsmqBinding. However, with the IBM channel, of course, the queue is WebSphere MQ v6.0, and not the built-in MSMQ. There is one other important difference though: Messages are encoded using the SOAP over JMS (Java™ Message Service) message format described in WebSphere MQ 6.0. Why is this important? This enables interoperability with services and clients hosted by other environments that can also read or generate SOAP-over-JMS. Examples are such as CICS (Customer Information Control System) and WebSphere Application Server.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;So this channel has the possibility of opening up some new interop capabilities between .NET / WCF applications and apps that run in non-.NET environments, including Java applications running in WebSphere Application Server. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Please do have a look: &lt;BR&gt;&lt;A href="http://www.alphaworks.ibm.com/tech/mqwcf/"&gt;http://www.alphaworks.ibm.com/tech/mqwcf/&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3899301" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Websphere/default.aspx">Websphere</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MSMQ/default.aspx">MSMQ</category></item><item><title>.NET can connect to WebSphere's built-in JMS</title><link>http://blogs.msdn.com/dotnetinterop/archive/2006/01/16/net-can-connect-to-websphere-s-built-in-jms.aspx</link><pubDate>Mon, 16 Jan 2006 16:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:512808</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/512808.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=512808</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Phil Willoughby of IBM dropped me a line.&amp;nbsp; Phil apparently works on the XMS stuff, I'm guessing out of IBM's Hursley lab.&amp;nbsp; Phil sez:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face=Tahoma color=#006400 size=2&gt;
&lt;P&gt;Re: &lt;a href="http://blogs.msdn.com/dotnetinterop/archive/2005/11/04/488770.aspx"&gt;http://blogs.msdn.com/dotnetinterop/archive/2005/11/04/488770.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;FYI, XMS can be used to connect directly to the WebSphere App Server embedded JMS system. There is no requirement to have WebSphere MQ, WebSphere Message Broker or WebSphere Business Integration Event Broker installed. Of course, if you're using another vendor's app server you would need to use WMQ or one of the brokers to bridge the gap.&lt;/P&gt;
&lt;P&gt;Mark Phillips' developerworks article does a good job of explaining this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0509_phillips/0509_phillips.html"&gt;http://www-128.ibm.com/developerworks/websphere/library/techarticles/0509_phillips/0509_phillips.html&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Hey, that's good to know!&amp;nbsp;&amp;nbsp; One more way to connect...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=512808" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Websphere/default.aspx">Websphere</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>XMS whitepaper from IBM</title><link>http://blogs.msdn.com/dotnetinterop/archive/2005/11/03/xms-whitepaper-from-ibm.aspx</link><pubDate>Thu, 03 Nov 2005 21:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:488767</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/488767.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=488767</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;A href="http://blogs.msdn.com/dotnetinterop/search.aspx?q=JMS&amp;amp;p=1"&gt;part of an ongoing series of posts on JMS and .NET interop&lt;/A&gt;. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I just saw this while looking around for something else - &lt;A href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0509_phillips/0509_phillips.html"&gt;IBM published a paper in late September on the XMS client library&lt;/A&gt; for their MQ brokers. I posted about this &lt;A href="https://blogs.msdn.com/446929.aspx"&gt;previously&lt;/A&gt;.&amp;nbsp; Essentially this is a .NET client for their MQ brokers, including an implementation of some stuff from JMS.&amp;nbsp;&amp;nbsp; That means publish/subscribe capability, partly.&amp;nbsp; The new article offers some new info and clarifies a few things for me.&amp;nbsp; Specifically, w&lt;/FONT&gt;&lt;FONT face=Tahoma size=2&gt;hen IBM says "MQ Brokers", they include the regular MQSeries in that.&amp;nbsp; Since CSD08 of MQ V5.3, IBM has offered a pub/sub capability in the base MQ.&amp;nbsp; So this XMS stuff works with that.&amp;nbsp; (IBM are now up to v6.0 of MQ.) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;A nice interoperability option!&amp;nbsp; This fixes the JMS-is-not-interoperable issue I had raised &lt;A href="http://blogs.msdn.com/dotnetinterop/archive/2004/12/06/275958.aspx"&gt;previously&lt;/A&gt;.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Remember, the&amp;nbsp;&lt;A href="http://www-1.ibm.com/support/docview.wss?rs=203&amp;amp;uid=swg24004732&amp;amp;loc=en_US&amp;amp;cs=utf-8&amp;amp;lang=en"&gt; .NET client library for plain-old-MQ is a separate thing&lt;/A&gt; - that has been a part of IBM's MQ product since MQ5.3 CSD05.&amp;nbsp; But, what this XMS thing is, is a pub/sub client.&amp;nbsp; Something a little different.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=488767" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>IBM and JMS-to-.NET interop</title><link>http://blogs.msdn.com/dotnetinterop/archive/2005/08/03/ibm-and-jms-to-net-interop.aspx</link><pubDate>Wed, 03 Aug 2005 17:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:446929</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/446929.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=446929</wfw:commentRss><description>&lt;H3&gt;IBM's .NET Managed client for JMS&lt;/H3&gt;&lt;FONT face=Tahoma size=2&gt;&lt;!-- ------------------------------------------------------- --&gt;
&lt;P&gt;Today I received a comment on &lt;a href="http://blogs.msdn.com/dotnetinterop/archive/2005/06/16/429635.aspx"&gt;a prior entry&lt;/A&gt; of this blog. It is noteworthy so I thought I would re-post it here. &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 20px; COLOR: teal"&gt;As previously mentioned in a previous blog entry (&lt;a href="http://blogs.msdn.com/dotnetinterop/archive/2005/04/20/410178.aspx"&gt;JMS Interop, revisited&lt;/A&gt;), there is a demand for .Net and JMS interop. &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 20px; COLOR: teal"&gt;IBM Message Service Client for .NET (informally known as XMS) has now started an open Beta programme. &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 20px; COLOR: teal"&gt;XMS is a non-Java implementation of the Java Message Service (JMS) API, currently implemented to work with the IBM WebSphere Messaging portfolio. Specifically, it is a fully managed .NET API that can be used by applications to send and receive JMS messages via IBM WebSphere Business Integration Brokers over Real-time Transport or via the default messaging provider within IBM WebSphere Application Server v6. &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 20px; COLOR: teal"&gt;We welcome you to download XMS from: &lt;A href="http://www14.software.ibm.com/webapp/download/search.jsp?go=y&amp;amp;rs=message"&gt;http://www14.software.ibm.com/webapp/download/search.jsp?go=y&amp;amp;rs=message&lt;/A&gt;, &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 20px; COLOR: teal"&gt;Try it out, and give us your feedback via: news://news.software.ibm.com/ibm.software.websphere.mq.beta. &lt;/P&gt;
&lt;P&gt;Cool!&lt;/P&gt;
&lt;P&gt;First question I have is, does it work with plain old WebSphere MQ?&amp;nbsp; &amp;nbsp;I don't know what the term "WebSphere Business Integration Brokers" includes. I think there are some premium products like WBI Server, and WBI Message Broker and WBI Event Broker, and I guess all of those are included in "WBI Brokers". But what about just MQ?  [ &lt;FONT color=#ff1493&gt;note added 4 Aug 2005 : The readme for this XMS.NET thing apparently states &lt;em&gt;NB. Interaction with IBM WebSphere MQ is not supported in this release but is currently under development. &lt;/em&gt; So I think you need one of the higher-end MQ or WBI products, for now. &lt;/FONT&gt;]&lt;/P&gt;  
&lt;P&gt;Anyone trying this out? &amp;nbsp;I am interested in feedback, too!&amp;nbsp; Comment on the blog or contact me privately.&amp;nbsp; I'd love to hear if this&amp;nbsp;thing is useful.&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- ------------------------------------------------------- --&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=446929" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>strange but true: JMS for .NET</title><link>http://blogs.msdn.com/dotnetinterop/archive/2005/05/26/strange-but-true-jms-for-net.aspx</link><pubDate>Fri, 27 May 2005 00:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:422301</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/422301.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=422301</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;A href="http://www.tibco.com/software/enterprise_backbone/enterprisemessageservice.jsp"&gt;TIBCO apparently has implemented the&amp;nbsp;JMS API in .NET&lt;/A&gt;.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#000080 size=2&gt;TIBCO Enterprise Message Service software not only provides a world-class JMS implementation, its .NET API supports and extends the JMS 1.1 specification. The TIBCO Enterprise Message Service .NET component fully incorporates .NET-style event handling and yet closely mimics the Java API. The implementation consists of fully managed .NET code.&lt;/FONT&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I hear you gettin' all excited about this, but&amp;nbsp;hold on.&amp;nbsp; It is only for Tibco's enterprise messaging stuff.&amp;nbsp;&amp;nbsp; Supposedly, though, it works for .NET CF, too.&amp;nbsp; Wow!&lt;/FONT&gt;&lt;/P&gt;
 [ &lt;FONT color=#ff1493&gt;note added 3 Aug 2005 : &lt;a href="http://blogs.msdn.com/dotnetinterop/archive/2005/08/03/446929.aspx"&gt;IBM has announced an open beta for the IBM Message Service Client for .NET.&lt;/A&gt; &lt;/FONT&gt;]&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=422301" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item><item><title>on Java-to-.NET interop via JMS and MQSeries</title><link>http://blogs.msdn.com/dotnetinterop/archive/2004/12/06/on-java-to-net-interop-via-jms-and-mqseries.aspx</link><pubDate>Tue, 07 Dec 2004 01:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:275958</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/275958.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=275958</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;While looking around I found two articles, from SYS-CON's WebSphere Developer's Journal, &amp;nbsp;covering J2EE and .NET interop via MQSeries. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;part 1: &lt;/FONT&gt;&lt;A href="http://sys-con.com/story/?storyid=43430&amp;amp;DE=1#RES"&gt;&lt;FONT face=Tahoma size=2&gt;http://sys-con.com/story/?storyid=43430&amp;amp;DE=1#RES&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;part 2: &lt;/FONT&gt;&lt;A href="http://sys-con.com/story/?storyid=43452&amp;amp;DE=1#RES"&gt;&lt;FONT face=Tahoma size=2&gt;http://sys-con.com/story/?storyid=43452&amp;amp;DE=1#RES&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;These articles reference ma7p, the IBM supportpac, which is no longer available.&amp;nbsp; ma7p has graduated into the MQSeries product.&amp;nbsp; Upgrade to MQ V5.3 + CSD05 or later to get the MQ classes for .NET. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Interesting: the 2nd article documents a problem I ran into while trying to connect a Java/MQ application that uses the JMS api, with a .NET application that uses the MQ Classes for .NET.&amp;nbsp; The JMS implementation essentially extracts function from the underlying MQ and embeds it into the API level.&amp;nbsp; So, things like MessageId and CorrelationId, which are indispensable for a typical MQ app, are not transferrable between a JMS/Java app and a .NET app.&amp;nbsp; JMS commandeers those MQ-isms and does not bubble them up into the application layer.&amp;nbsp;&amp;nbsp; In some cases there is a similarly named JMS thing, but it is not the same thing as the underlying MQ thing.&amp;nbsp;&amp;nbsp; In fact I could not find a way to set the MQ Message ID - the JMS doc I found said that the JMSMessageID on an outgoing JMS message will always be set by the JMS layer - the application is not able to set it.&amp;nbsp; (not quite true, you can set it all you want, but as soon as you send the message, your MQ MessageId is over-written with a JMS-provided&amp;nbsp;value).&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The net result was that I found myself reverse-engineering the JMS implementation of message-munging.&amp;nbsp; At first it looked like it was just one or two methods, but the JMS-isms just kept coming and coming.&amp;nbsp; The correlation ID needed to have a specific prefix.&amp;nbsp; Strings had to conform to a JMS-specific encoding.&amp;nbsp;&amp;nbsp; If you try to encode a simple buffer with a couple of integers and a string, you get a big hairy XML envelope (with no namespaces!&amp;nbsp; The dreaded RFH2 envelope) - the JMS message envelope.&amp;nbsp;Which may be just what you DON'T want in a high-throughput messaging app.&amp;nbsp;&amp;nbsp;&amp;nbsp;The JMS pitfalls and traps seemed to just keep going and going.&amp;nbsp; &amp;nbsp;Eventually I just punted and switched the Java app to use the "MQ Classes for Java", a package which defines, like the "MQ Classes for .NET", an IBM-only programming interface.&amp;nbsp; When I use the MQ Classes for Java, I&amp;nbsp;don't get the surprises I mentioned above. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Stop and think for a minute; This is a completely ridiculous situation.&amp;nbsp; Imagine if you inserted rows into an Oracle database with a JDBC app, and then you could only read those rows with another JDBC app.&amp;nbsp; Imagine if your LDAP repository, once you accessed it with JNDI, became a resource that could only be accessed by Java apps.&amp;nbsp; Preposterous, right?&amp;nbsp; Well that's what JMS does.&amp;nbsp; You have to go to the high-fidelity MQ Classes for Java if you want to have a reasonable effort connecting Java to .NET apps.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;"Non-standard interface!"&amp;nbsp;&amp;nbsp; you point out.&amp;nbsp;&amp;nbsp;&amp;nbsp; "Lock-in!"&amp;nbsp;&amp;nbsp;Yeah, you're right.&amp;nbsp;&amp;nbsp; But&amp;nbsp; Interop trumps Neutrality.&amp;nbsp; [Disclaimer, I never believed the "vendor neutrality" arguments anyway]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The designers of JMS - either the IBM implementation of it, or the specification itself - have made decisions about message formats that specifically preclude any interop between a JMS (Java) app and a non-JMS app, without lots and lots of extra effort by the non-JMS side.&amp;nbsp;&amp;nbsp; The message formats are not published, so you either have to reverse-engineer them, and risk violating the JMS specification license, or ... you have to license and implement JMS.&amp;nbsp; In either case,&amp;nbsp;Vaya con dios, the future holds lots of&amp;nbsp;work and lots of&amp;nbsp;lawyers for you.&amp;nbsp;&amp;nbsp;&amp;nbsp;Going with JMS, you may not get "Lock in" to a particular vendor of message middleware, but you do get "Lock out" - of anything non-Java.&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;So I have some questions for you all: &lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face=Tahoma size=2&gt;do you do interop between Java and .NET over MQ ?&amp;nbsp; If so, do you use JMS?&amp;nbsp; How do you resolve the issues I mentioned? &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Tahoma size=2&gt;anyone have any helper classes in C# or VB that unpacks the JMS envelope? &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Tahoma size=2&gt;what did you do about JMSMessageID?&amp;nbsp; &lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=275958" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JMS/default.aspx">JMS</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item></channel></rss>