Earlier this month, Syscon published an article that describes how to interconnect .NET and Java apps via a web services programming model, but using JMS as part of the connectivity infrastructure. I just saw it today.
The solution relies on ActiveMQ. The key capability of ActiveMQ that makes this all possible is that it exposes both a Java and a .NET API. The Java side is JMS and the .NET side is i-don’t-know-what. In any case, because the Java app and the .NET app can both put and get messages to the ActiveMQ queue, there is interconnectivity.
The web services aspect sweetens the deal by providing WSDL-based interface definition, and the goodness that comes from that, including automatic proxy generation. For the Java side, the web services stack was Apache AXIS v1.4 (released in April 2006), and for the .NET side, it was the ASMX web services stuff included in .NET 2.0 (released in November 2005). The key interesting bit to the article is the stitching together of the respective web services stacks with the message queue infrastructure. Both Apache AXIS and .NET allow for the integration of alternative communication protocols.
The authors, a couple of consultants from MomentumSI, appear to know what they are doing. However, they did not use WCF – the communication stack in .NET that was originally released about 18 months ago. And, they elected not to use AXIS 2.0. I don’t know why they wouldn’t have used more current stuff, except possibly it was customer driven – technology adoption in enterprises tends to lag technology innovation by providers like Apache and Microsoft.
Stepping back just a bit, it is interesting to me that even now, here in March 2008, the editors at SysCon think it is worthwhile to publish this kind of article. This is the kind of stuff that has been possible for a long time, given that AXIS and .NET have had extensibility capabilities in the web services stacks even before the release of the technology used in the article I mentioned here. Seems to me that enterprises are taking their time adopting the various technology stacks. Just because a technology was introduced 2 years ago or more (as with AXIS 1.4 and .NET 2.0), that does not mean the technology is out of date, or not useful. (In my opinion, the WCF stack is superior to the .NET ASMX stack that it supplanted, because WCF is so much more pluggable and extensible. But that relative judgment does not imply that ASMX is not useful or not appropriate for the given situation).
By the way, I still have a bunch of AXIS+.NET interop samples, with source code, running at: http://dinoch.dyndns.org:7070/axis1.2 .
ps: whoops! The ActiveMQ website is showing a hack at this moment. I’m sure they’ll fix it shortly.