<?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 : WebLogic</title><link>http://blogs.msdn.com/dotnetinterop/archive/tags/WebLogic/default.aspx</link><description>Tags: WebLogic</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></channel></rss>