Recently, I have had multiple discussions with different individuals concerning possible JBI deployment options for their projects. Is Glassfish required? Do I need a JavaEE container? Do I need Netbeans? Is it packaged as a WAR? How big is the runtime footprint? If I am already using JBoss, how can I take advantage of JBI? Why is the OpenESB installer so large? Even with every project having its own specific needs, JBI has an array of potential solutions for each one. So if you are new to JBI or just curious how to use it, please contiue to read while I describe the various options.
First, I have fortunately had the pleasure of extensively using two of the most popular JBI containers currently available: Apache ServiceMix and Sun's OpenESB. The following is the landscape as I see it based off my experience.
Apache ServiceMix Options
- Can run as a standard J2SE application. To use this version download the container from here: http://incubator.apache.org/servicemix/download.html
- Bundled as a WAR, making it deployable to your existing JavaEE container. The WAR is also available for download from the same address above.
- Can run as a standard J2SE application. Although it's a little more untested than it's other options. Go here for a How-To Guide on where to download the container and run it.
- Comes bundled in an All-In-One install that includes the latest Glassfish, OpenESB, and Netbeans 6.0 for tooling support. Go here to download this version. Before you flip out on the download size (300+MB), let me provide an explanation as to the size because this seems to be the version receiving the most attention by Sun; and it's actually the version my team uses. Along with the items mentioned above, this bundle also includes all the Sun components and the latest Community Partner components. I believe the main benefit to having an All-In-One install is previously we had to download each project individually and usually the different versions where incompatible (the BPEL tooling support in Netbeans didn't match the BPEL Service Engine capabilities downloaded with OpenESB). It's important to note that with this option Netbeans is only required to compose Composite Applications and not to run OpenESB. Finally, the Glassfish and OpenESB combo is a little deceiving in that it's not like starting two applications. OpenESB is basically exploded out in one of the Glassfish domains, much like a WAR would be. So when you start a Glassfish domain, it handles starting OpenESB.
- There exists a WAR file for IBM Websphere located here and work has been done to integrate with JBoss (read here for more information).
Most projects fall into two categories: one that already has a JavaEE container and ones that don't. If you already have a JavaEE container, then you can use the ServiceMix WAR or run the J2SE standalone version of OpenESB. If you don't have one, then obviously you can choose among all the options. If I was forced to give a personal recommendation, I would recommend when possible using the Glassfish/OpenESB package. This gives you complete capability of building Composite Applications consisting of Web Services running in Glassfish and orchestrating them using OpenESB and the BPEL Service Engine and then integrating with other protocols such as RSS, SIP, UDDI, and XMPP. And the tooling support in Netbeans is well worth it.
For further questions please visit the FAQ on http://www.jbizint.org or feel free to drop me a comment. You can also subscribe to my shared JBI RSS Feed.