Last week Sun Microsystems arranged an Open Source event here in Oslo. And I was among the lucky presenters...A month back I, along with my colleagues Mark West and Øyvind Syrstad, were tricked into making an presentation on Open ESB, the open source ESB from Sun Microsystems. The presentation was to be held at the Sun Open Source Day, March 22nd. A small event, but big enough for me!
The goal was to investigate how Open ESB could be used for solving an EAI scenario for one of Objectwares customers. Basically the customer wanted to expose some internal services to a subcontractor. Their current solution ran on Business Integration Engine which is somewhat cranky and out of date :)
Open ESB hasen't been around for too long, but it is looking quite promising. It is based on JSR-208 Java Business Integration, which basically is a standard for developing ESB's and standard ESB components.
JBI consists mainly of four parts:
The Normalized Message Router, a standardized messaging router by which all JBI components communicate within a JBI container such as Open ESB.
Service Engines, a container of sorts that is hooked up to the NMR, and can be used for deploying your business logic. I.e. BPEL applications goes in a BPEL Service Engine.
Binding Components, enables communication with external services through the NMR. I.e. a Soap Binding Components enables Service Engines to consume and produce SOAP Web Services.Service Assemblies, the packages containing your application. Uses various Service Engines and Binding Components to to your dirty work. This is the deployment artifact.
All of this enables you to assemble new SOA-based applications of standardized best-of-breed JBI components *buzz buzz*.
Along with Open ESB there are also some other open source JBI containers out there, such as ServiceMix, PEtALS and Mule-JBI, but the focus of our experimentation was of course on Open ESB.
We spent a lot of time experimenting with the latest versions of Open ESB and Netbeans, and tried to figure out how Open ESB could help us to implement our scenario.
The components we tried were:
Open ESB sure has a lot of potential, there are a lot of new components and tools under development, check out the Glassfish wiki for details. Of the above-mentioned components, the BPEL and Java EE service engines along with the SOAP Binding Component seemed most mature. The rest were rather unstable, this is however to be expected of beta-software :)
One of the nicer things about Open ESB is the tooling support provided by the Netbeans IDE. Netbeans is a decent IDE platform for Java and the Open ESB addons worked quite nicely. Tooling is something that often is lacking or incomplete when it comes to open source integration systems.
Netbeans comes integrated with WS-Unit, that enables basic in-container testing of SOAP-based endpoints.
There is also an interesting external project called
the JBI Mock Framework, which aims to provide a
framework for mocking the NMR, thus enabling out-of-container testing of JBI components.
One thing that Open ESB / Glassfish is currently missing is proper administration tools for JBI components, the existing Java EE administration tool only shows a blackbox view of your deployed Service Assemblies, and does not provide any particular monitoring tools. There is a new management system under development though, which will provide full monitoring of JBI components and increased configurability, looking forward to this one!
This was a rather quick summary, but the presentation as a whole is available for download on the Objectware web site.
There's also a few links on my del.icio.us site.