Last week I was on vacation, and this week I’ve been desperately trying to catch up, as well as taking some briefings in advance of what appears to be a big month of tech announcements in September. Obviously, I can’t speak to the briefings
(yet), but one of the things I’ve been catching up on is the open source enterprise service bus (ESB) release announcement from ServiceMix, and the ESB-like Apache Synapse Web Services Mediation Framework project announcement.
For those that are counting, this brings the number of open source ESB (and like) announcements this summer to five. Earlier announcements came from Iona (Celtix project), Sun (Java System Enterprise Service Bus (Java ESB)), and Mule.
Open Source in the Enterprise
I haven’t spoken (here) at length about open source, but in brief, I believe open source absolutely has a place in the enterprise; and that enterprises have some responsibility to contribute back (resources, code) to the open source community. Of course, on both ends, you need to be smart. Understand the implications of licensing, IP (yours and theirs), support (yours and theirs), code quality, security and stability, project adoption and longevity, and total cost – because nothing is really free.
That said (more another time); a great (no-brainer) use of open source is in experimenting with new technology. In almost all of my ESB writings for PSGroup, I encourage our clients to “play” with open source solutions, to get a feel for
the technology, and to contemplate technology (not necessarily product) fit for their businesses.
One of the open source ESB solutions I’ve mentioned is ServiceMix, the project backed by LogicBlaze. Last week, ServiceMix announced the first major release of their open source ESB, which is based on the JBI specification. Let me emphasize the word release, as in there is real software to download and try out.
The Key Technical Features (taken from ServiceMix materials):
- Normalized Message Service and Router
- JBI Management MBeans
- Ant Tasks for management and installation of components
- Support for the JBI deployment units with hot-deployment of JBI components
Service components (Service Engines):
- Rules-based routing via the Drools rule engine.
- BPEL support for WS-BPEL via PXE
- Cache, for caching service invocations using a Map cache or a JCache provider
- Groovy, for clean integration with the Groovy scripting language as a component, transformer or expression language
- JCA, which allows the Java Connector Architecture to be used for efficient thread pooling, transaction handling and consumption on JMS or other resource adapters
- Quartz, to support enterprise timer integration via the Quartz library
- RSS component for integrating and processing RSS news feeds in JBI
- Scripting support for any JSR 223 compliant scripting engine to be used to easily create a component, perform a transformation or be an expression language.
- Transformations using XSLT
- Validation, for schema validation of documents using JAXP 1.3 and XMLSchema or RelaxNG
- XPath and XSLT based routing and transformation engine.
- XSQL for working with SQL and XML via Oracle’s XSQL library
- ActiveSOAP, the lightweight StAX-based SOAP stack
- Reflection, to allow POJOs to be deployed in ServiceMix
- SAAJ for Soap With Attachments and Apache Axis support
- XFire for clean integration with POJOs via the XFire SOAP stack
- WSIF for integration with the Apache Web Service Invocation Framework
- Email support via
- File-based components for writing messages to files and polling directories and sending files into the JBI
- FTP support via the Jakarta Commons Net library
- HTTP, for both client-side GET/POST with the Jakarta Commons HttpClient, and server side processing with servlets or Jetty
- Jabber to provide bindings to Jabber network via the XMPP protocol
- JMS via the Java Messaging Service plus highly reliable and scalable transports in ActiveMQ, including persistence, recovery and transaction support.
- VFS via the Jakarta Commons Net library, which provides access to file systems, jars/zips/bzip2, temporary files, WebDAV, Samba (CIFS), HTTP, HTTPS, FTP and SFTP, among others.
As you can see, ServiceMix includes many important ESB features/functions. One optional feature that I was happy to see is the RSS component for integrating and processing RSS feeds. On (more than) a few occasions, I’ve written/spoken to the role of RSS for individual subscriptions in the enterprise, especially for dissemination of business and system events. For me, SOA, event-driven architecture (EDA) and integration are all inter-related, and this services-oriented integration solution, with capability for RSS-based event syndication is a good example of things to come.
I haven’t taken the product for a spin yet so, but fully intend to, and will write about my experience. I suggest readers do the same. As Robert Strachan, ServiceMix’s project architect, points out in the product announcement:
“What we’re saying with this release is, you could go online and read what a lot of people are saying about JBI, or you can download ServiceMix and get hands-on with JBI right now…”.
…of course I also advocate mixing in some reading!
Apache Synapse – A Web Services Mediation Framework (ESB-like)
The Apache Synapse project announcement generated a lot of conversation last week, but at the core, is a straightforward goal. The project intends to provide an implementation of a distributed services mediation framework, which is based on Web Services specifications. The specifications at the center of the framework are SOAP, WSDL, WS-Addressing, WS-Policy, WS-Security and WS-ReliableMessaging.
The distributed services mediation framework implementation aims (from the project proposal) are as follows:
- a messaging and communications infrastructure;
- based on the principles of service oriented architectures;
- that provides a way of connecting disparate systems;
- that manages the connections and the routing of messages between systems;
- that intermediates and transforms messages and service interactions independently of the endpoint applications;
- that is neutral with respect to the languages and platforms that are integrated – providing first class support for C/C++/COBOL/Java/.NET and other application platforms.
Why is this needed? Well, to achieve enterprise scale SOA (reuse and loose coupling) you often need to employ non-invasive middlemen between requestors and services for routing, transformation, security, and management
tasks. Without mediators, unnecessary complexity would have to be built into requestors and services, which defeats the purpose of SOA.
Why is this project so interesting? First, it’s Apache, and it is being built to work with Apache Axis 2.0, the next generation of the hugely popular (and successful) Apache Web Services implementation. Second, as Phil Waineright of Loosely Coupled points out here, the implementation in C will be designed to take full advantage of the Linux environment, and should result in an “Indigo for Linux”. Third, enterprise developers will have a standard Web Services mediation framework to use in sandbox and development environments. Fourth, vendors will be able to implement that same mediation framework in robust SOA environment and integration solutions (Fabrics, Web Services Management, ESB, JBI containers etc.), which enterprise developers can use in test, quality and production environments.
Why all the conversation? The name: Web Services Mediation Framework rather than ESB, or services broker. (Honestly, who cares as long as the right functions are there, and it is standards-based.) The code base: The code is being donated by vendors, rather than originating in the open source community. The players: The vendors have good mind share in their spaces (Blue Titan, Infravio, Iona, and Sonic Software) but aren’t industry giants. The driver, WSO2, while long active in Apache, is a startup. And, the lack of detail: What exactly do they mean by “mediation”, what does JBI support as an add-on mean?
What now? Well, it is early. It only makes sense there are more questions than answers. So, for the majority, Synapse is something to watch. For those that are passionate (with the proper expertise), you might want to get involved. If you have current SOA and integration projects, continue to pursue existing solutions that fit into your business and architecture, but (as always) keep an eye forward.
Speaking of Getting Involved…Breaking News – Impending Alliance of ServiceMix, Apache Synapse and Celtix
As I was researching and writing today, I saw this article on c|net that speaks to an impending alliance of three open source integration projects: ServiceMix, Celtix and Synapse. A snippet from the article:
Those involved in talks told CNET News.com that the partnership calls for close technical ties and code sharing among ServiceMix, Apache Synapse and Celtix, which is hosted at France-based consortium ObjectWeb.
The goal of the planned alliance, the sources said, is to create a more cohesive integration offering and attract software developers in the increasingly cluttered field of open source, where new projects seem to appear weekly.
According to c|net, an official announcement should be forthcoming in September. Digging a little deeper, I saw this on the Apache mail archives that James Strachan of ServiceMix approached Sanjiva Weerawarana of Apache Synapse to
collaborate on making Synapse fully JBI-compliant. Perhaps that covers the JBI add-on question.
In the long run, cooperation is good, for the projects, and the potential consumers. But as we all know from our own project work, merging of ideas and parties, typically slows things down.
So, play with ServiceMix and watch Synapse. At least, that’s my plan.