Background

Confession: I am a pragmatist. I do believe that SOA is more about the design—and not the technology. However, I also believe that if you don't have some tools to implement some of the more complex design patterns for SOA, you are probably wasting a tremendous amount of time, energy, resources, opportunity, and money creating the infrastructure and plumbing that you will need anyway. SOA with tools is not evil. Misuse of tools, or worse, confusing the tool for SOA, is what needs to be avoided.

A recent client engagement has involved providing assistance in the design and implementation of a Service Oriented Architecture. The client's core development expertise is primarily with Microsoft .NET technologies, while most of their legacy code runs on a mainframe.

Over the last few months, given the prospect of looming budget constraints, and the practical cost barriers that are encountered when scaling commercial SOA vendor products across the enterprise, I've spent quite a bit of time evaluating a number of different Open Source projects for possible consideration as part of the enterprise architecture technology stack.

I've been working with the GlassFish Java 5 EE Application Server for the last 18 months—using it primarily to run the Hudson continuous integration engine—and have been extremely pleased with its stability as well as the quality of the admin console.

As you can imagine, introducing Open Source tools into any organization can be quite challenging, but an unexpected ally arrived recently which has increased the attractiveness of that option: Budget Reductions.

In considering options for implementing an Enterprise Service Bus (ESB), my design principles favor a solution that will allow the creation of a "virtual bus"—without incurring a severe cost penalty for instantiating an instance of the necessary technology stacks on every server; as well as avoiding the hub-and-spoke enterprise architecture integration model.

Apache Synape looks promising—and is still under consideration, but the recent GlassFish ESB announcements have drawn my attention: On October 12, 2008, the GlassFish ESB V2 Release Candidate was made available. The General Availability (GA) Build was certified on December 5, 2008, and and Commercial Support for early adopters was made available as of December 23, 2008. A formal launch is planned for sometime in February 2009.

Just to be clear: I'm technology neutral. I always take into consideration an organization's existing developer skillsets, the education commitment necessary to introduce new tools and technologies, the long-term maintenance and operational support issues, and the very real nature of limitations of available funding.

The following features are available in the basic installation and support modeling a wide variety of SOA design patterns:

BPEL Design Palette includes:

CASA Design Palette includes:

Basic Activities:

Structured Activities:

WSDL Bindings:

Assign

Empty

Wait

Throw

ReThrow

Exit

Compensate

CompensateScope

If

While

RepeatUntil

ForEach

Pick

Flow

Sequence

Scope

database

file

ftp

http

soap

soap12

jms

ldap

Other GlassFish Projects

Another GlassFish project that is beyond the scope of this article, but worth keeping an eye on, is GlassFish Server v3 Prelude:

"GlassFish v3 Prelude is the next major release of the GlassFish application server. GlassFish v3 Prelude provides a lightweight and extensible core based on OSGi, a web and scripting container, an easy-to-use Admin Console for configuration and management, and Update Center connectivity."