This article describes key technical features of IBM® WebSphere® ESB V6.0.2 and WebSphere Integration Developer V6.0.2, and provides references to development resources. The article will help architects, service integrators, and developers to use WebSphere ESB to develop enterprise SOA solutions. The following features of WebSphere ESB differentiate it from other ESB products:
- A default messaging engine based on JMS specifications.
- WebSphere Application Server code base: a world-class J2EE foundation providing industry-leading levels of availability, scalability, and performance.
- Support for J2EE, Web services, and interoperability standards to enable flexible integration of services in J2EE and Web services environments.
- Support for Service Component Architecture (SCA), allowing easy and dynamic assembly and binding of service components at both development time and run time.
- Included as a default ESB in WebSphere Process Server, which provides advanced business integration and process management. As business needs arise, enterprises can readily extend their SOA solutions by deploying WebSphere Process Server capabilities.
- Companion WebSphere Integration Developer is based on Eclipse and provides a common integrated environment to develop and assemble services or build business process models.
- Streamlined installation and configuration procedures, and the same look-and-feel in administration and management user interface as WebSphere Application Server and WebSphere Process Server.
Connectivity of services across heterogeneous technologies and systems is one of the foundations in implementing SOA for enterprise information systems. WebSphere ESB provides common connectivity between services via its default messaging engine while supporting various interaction styles, protocols, and Quality of Service (QoS). It mediates messages between service requesters and service providers via mediation modules. WebSphere ESB provides core ESB mediation capabilities, such as message transformations and filtering or routing of messages to different service providers. In addition, it provides functions such as message logging, augmenting messages with data from a database, and error processing that is tailored to your requirements. WebSphere ESB mediations enable the same service to be accessed by service requesters through multiple protocol channels. WebSphere ESB is based on SCA and supports key J2EE and Web services standards. It enables easy integration and deployment of services, and dynamicity in managing mediation services while providing convenient points of configuration and instrumentation for security and monitoring components. WebSphere ESB provides easy connectivity to many enterprise applications, such as SAP, Siebel, and PeopleSoft, through its support for WebSphere Adapters.
In addition, WebSphere ESB provides:
- IBM Message Service client for C/C++ -- Extends the JMS model for messaging to C and C++ applications
- IBM Message Service Client for .NET -- Enables .NET applications to participate in JMS-based information flows
- IBM Web Services Client for C++ -- Enables C and C++ applications to connect to Web services hosted on WebSphere
WebSphere ESB mediation modules are SCA modules that can mediate messages that are in flight between service requesters and service providers. SCA modules contains SCA components or service components. SCA components are SCA building blocks that can be assembled into composite services. You can create and customize SCA modules and components graphically, using WebSphere Integration Developer. In addition, you can customize some of the properties of mediation modules dynamically, from the WebSphere ESB administrative console, without having to redeploy the module. Typically, mediation modules contain a specific type of SCA component called a mediation flow component. A mediation module can contain, at most, one mediation flow component. A mediation module can also contain:
- SCA imports of an external service -- Enable a mediation component or an SCA service component in a mediation module to reference and invoke a service external to the module.
- SCA exports -- Expose an SCA service component or mediation flow component in a module and make it accessible to service requesters external to the mediation module.
Figure 1. WebSphere ESB and mediation modules
Bindings and protocol conversion
WebSphere ESB can interconnect a variety of different service requesters and providers using the mediation flow component. The inbound and outbound protocols to the mediation component are specified as bindings in the export and the import components of a mediation flow component. WebSphere ESB inherently performs protocol conversions based on these bindings. WebSphere ESB V6.02 supports the following bindings:
- Web service bindings -- Let you access Web services. They support the SOAP/HTTP and SOAP/JMS protocols.
- SCA bindings (also called default bindings)-- Connect SCA modules to other SCA modules.
- Java™ Message Service (JMS) 1.1 bindings -- enable interoperability with the WebSphere Application Server default messaging provider. The JMS protocol can exploit various transport types, including TCP/IP and HTTP(S). The JMS Message class and its five subtypes (Text, Bytes, Object, Stream, and Map) are automatically supported.
- WebSphere Adapter Bindings -- Enable interaction with Enterprise Information Systems (EIS). IBM provides WebSphere Adapters based on JCA standards for connectivity to EIS applications via other protocols such as SAP, PeopleSoft, and Siebel.
- WebSphere MQ JMS Bindings** -- Enable interoperability with WebSphere MQ-based JMS providers. The JMS Message class and its five subtypes are automatically supported.
- WebSphere MQ Bindings** -- Enable interoperability with native WebSphere MQ applications. You can use WebSphere MQ bindings only with remote queue managers via a WebSphere MQ client connection; you cannot use them with local queue managers.
A mediation module does not have to contain a mediation flow component. A mediation module that does not contain a mediation flow component is typically used for protocol conversion between service requesters and providers.
JMS custom bindings
Predefined JMS data bindings provide a mapping between the format used by an external JMS message and the Service Message Object (SMO) representation used by a mediation module. Some of the predefined JMS bindings have specific requirements -- for example, the JMS Text binding requires the message body to be a Business Object (BO) XML description of a message, and the JMS Object binding requires the message body to be a serialized Java Data Object. For JMS message types that are not supported by predefined JMS data bindings, or for custom processing of inbound and outbound JMS messages into SMO messages, you can specify JMS custom bindings for export and import components of a mediation module.
WebSphere ESB supports the following messaging interaction models:
- One-way interactions
- Request-reply interactions (synchronous or asynchronous)
Based on SCA, you can specify preferred interaction styles and various Quality of Service (QoS) and transactional properties on interfaces, references, and bindings.
Mediation flow component
A mediation flow component is used to define mediation flows. A mediation flow component contains:
- Mediation flows -- perform mediation on request and/or response messages between the service requester and the service provider.
- Interfaces -- One or more interfaces to be used by service requesters to invoke the mediation component.
- References -- zero or more references to imports of external services invoked by the mediation component.
A mediation flow component can have a request mediation flow, and a response mediation flow for request-reply interactions:
Figure 2. Details of a mediation flow component
Mediation flows and mediation primitives
A mediation flow is composed of one mediation primitive, and optionally, a number of mediation primitives. Each flow has an input node for each source operation
and a callout node for each target operation. You can also promote the
Use dynamic endpoint property in the callout node.
Figure 3. Mediation request flow and response flow
Mediation primitives process messages as Service Message Objects (SMOs). An SMO is the logical representation of messages exchanged between services within WebSphere ESB. SMOs are patterned after Service Data Objects (SDOs). An SMO message consists of a header, a body containing a message payload, a context containing data to correlate a response flow and a request flow, and transient data to link primitives across a request or response flow. WebSphere ESB V6.0.2 supports the following mediation primitives:
- Database Lookup -- Enrich or update a message using information from a specified database.
- Message Filter -- Selectively route messages based on message content specified via XPath expressions.
- Message Logger -- Log messages in a database.
- Stop -- Stop a path in the mediation flow without generating an exception.
- XSLT -- Use the XSLT mediation primitive to transform messages.
- Endpoint Lookup** -- Dynamically route messages to appropriate service endpoints. The Endpoint Lookup primitive searches for service endpoint information for Web services, Mediation module exports with Web service bindings, and the default SCA binding from WebSphere Service Registry and Repository (hereafter called the Registry and Repository).
- Event Emitter** -- Emit Common Base Events from within a mediation flow if an unusual situation (or audit situation) occurs.
- Fail** -- Stop a mediation flow, and generate an exception.
- Message Element Setter -- Set the content of messages.
- Custom** -- Execute custom logic specified in a Java SCA component, or an import of an external service. You can use a custom mediation primitive to interface with external transformation engines such as WebSphere TX, which provide convenient graphical tools to process industry standard data formats such as EDI and SWIFT.
Mediation primitives have properties, and some of these properties can be made visible to the WebSphere ESB administrator by promoting them.** Promoted properties have an alias name, which is the name displayed on the WebSphere ESB administrative console. Multiple promoted properties can be given the same alias name if they are of the same type in order to be assigned the same value.
** New features in WebSphere ESB V6.0.2
WebSphere Integration Developer provides an integrated environment for developing and testing mediation modules and SCA components. It provides graphical editors for SCA programming artifacts, such as the Business Object Editor and the Interface Editor. It provides a graphical UI to specify detail properties of components, bindings, and QoS qualifiers for the service components. Built on Eclipse, you can use it to develop SCA modules and other SCA components to be deployed to WebSphere Process Server.
WebSphere Integration Developer provides several graphical editors and wizards for discover and import services, rapid development, testing, and deployment of mediation modules.
Mediation Module Assembly Editor
WebSphere Integration Developer includes a Mediation Module Assembly Editor to graphically assemble a mediation flow component with other Java components. It can also import referenced services for invocation. The Editor lets you generate one or more exports of your mediation component with supported bindings for consumption by service requesters via multiple protocol channels:
Figure 4. Mediation module assembly editor
Mediation Flow Editor
WebSphere Integration developer also provides a graphical Mediation Flow Editor to build mediation flows between source and target interfaces by graphically stringing together zero or more mediation primitives from the palette of predefined mediation primitives. The Editor makes it easy to specify detail properties of each mediation primitive. For example, for the Endpoint Lookup primitive, you can configure one or more definitions of the Registry and Repository WSRR that may be used under Preferences. For each lookup primitive, you can specify detail properties including the Registry and Repository definition to be used, the Registry and Repository classification of the service, and the user-defined properties of the service to be queried.
Figure 5. Mediation flow editor
The Properties Editor for each mediation primitive also displays a list of promotable properties that you can select to be visible to the WebSphere ESB administrator.
Figure 6. Promoted properties of a mediation primitive
XSL Mapping Editor
For the XSL Transformation primitive, WebSphere Integration Developer provides a graphical editor to map between an individual element or arrays of elements from the source to the target message using drag-and-drop to generate XSL, and to define XSL functions. The editor also gives you an option to specify an existing XSLT file for the transformation. You can use an XPath editor to select the contents of a message to be used by a Filter mediation primitive to specify content-based routing.
Visual Java Snippet Editor
For custom mediation primitives, you can use either the embedded visual Java Snippet Editor or the standard Java Editor to develop Java code for implementation. You can add a custom mediation primitive to the graphical palette of built-in primitives by turning it into an Eclipse plug-in.
Enterprise Service Discovery wizard
WebSphere Integration Developer also provides the Enterprise Service Discovery wizard to discover services in the Registry and Repository or in WebSphere Adapter service artifacts to generate WebSphere Adapter (EIS) bindings.
WebSphere Integration Developer provides a component test client to test SCA components including mediation flow components. The test client lets you specify an input to a service manually, or load it from a file. It provides an emulator where you can specify return data to emulate the result of the target service component via manual entry or retrieval from a specified file. Moreover, you can debug mediation flows using an in-place visual debugger where you can add breakpoints, and step into, through, or over areas of interest while inspecting the values of the messages.
WebSphere ESB mediation modules are packaged into Enterprise Application Archive (EAR) files. You can deploy the EAR file containing the mediation application to the WebSphere ESB test server embedded inside the WebSphere Integration Developer test environment. When you deploy the application to the WebSphere ESB test server, any JMS messaging resources required for export and import components with JMS bindings are automatically generated on the default messaging engine used by the server. You can use either command-line scripts or a Web-based administrative console to install and manage these mediation applications to the embedded test server or to an external WebSphere ESB server.
Installation and configuration procedures for WebSphere ESB are similar to those for WebSphere Application Server and WebSphere Process Server, thus simplifying installation and configuration if you are familiar with one of those two products. You can install WebSphere ESB using an installation wizard or silently in a non-interactive mode. Once installation is completed, you can create and configure one or more servers in standalone or network deployment mode. Network deployment lets you administer a group of servers centrally from a deployment manager. The configuration is done by creating corresponding profiles. After you create a profile, you can create server instances with it. Here is a sample topology involving WebSphere ESB:
Figure 7. A sample topology involving WebSphere ESB
For scalability and high availability, you can configure WebSphere ESB and its corresponding messaging engine in WebSphere Network Deployment clusters. If you plan to enable event monitoring of SCA components or handle events emitted by the Event Emitter primitive, you can perform post-installation tasks to configure the Common Event Infrastructure. If you plan to use the Registry and Repository, you need to configure one or more definitions of it that can be used for the Endpoint Lookup mediation primitive, using the Web administrative console. You can enable C, C++, or .Net applications to participate in interactions with WebSphere ESB by installing and configuring Message Service clients provided with WebSphere ESB.
Since mediation modules are packaged in an EAR file, they are installed on a WebSphere ESB server as enterprise applications. You can install them using the wsadmin command-line tool or the WebSphere ESB administrative console. You can use the wsadmin tool in different ways -- interactively, as an individual command, or using jacl scripts. WebSphere ESB has commands that let you display SCA modules and their imports and exports. You can also make changes to Web service and SCA import bindings. While scripts are useful for large-scale administrative tasks, the Web administrative console provides a user-friendly interface. Administrative capabilities include:
- Display details of the application used to deploy a mediation module
- Display the general configuration properties of a mediation module
- Display service imports in a mediation module
- Display exports in a mediation module:
Figure 8. Displaying details of a mediation module in the WebSphere ESB Administrative console
- If the import binding is a Web service, you can change its endpoint URL If the import uses SCA binding, you can modify it to point to a different SCA module as a target.
These changes takes effect immediately (or after synchronization in Network deployment) without having to restart or redeploy the module:
Figure 9. Changing endpoint URL in the WebSphere ESB Administrative console
- Display promoted properties of a mediation module. You can change the value of the promoted properties of a mediation module**. These changes takes effect
immediately (or after synchronization in network deployment) without having to restart or redeploy the module:
Figure 10. Changing the promoted properties of a mediation module WebSphere Administrative console
- Start a mediation module that is not running (has a status of Stopped) or stop a module that is running (has a status of Started). To change the status of a mediation module, start or stop the application used to deploy the module.
- Manage resources used by mediation modules. When you install a mediation module into WebSphere ESB, JMS destinations and resources required for mediation components, exports, and imports are automatically defined on the WebSphere ESB server. These resources may be viewed and managed, for example to modify their properties for better performance.
- Create, configure, and display all your Registry and Repository access definitions**.
** New features in WebSphere ESB V6.0.2
WebSphere ESB uses the global security framework provided by the WebSphere Application Server platform. It supports SSL for protocol-level security and WS-Security for message-level security of SOAP Web services. WS-Security is specified in the IBM extensions of Web services bindings of export and import components. WebSphere global security for WebSphere ESB must be enabled to utilize user identities stored in a WebSphere Security registry such as the LDAP user registry.
WebSphere ESB provides key ESB capabilities for connecting disparate services in an SOA. It provides a default JMS messaging engine for common connectivity of services while supporting multiple communication protocols and interaction patterns. It provides mediation between service requesters and providers using predefined and user-defined mediations. It supports connectivity to EIS applications via IBM WebSphere Adapters based on JCA specifications. With its native support for Web services, J2EE, and SCA standards for seamless service integration, WebSphere ESB is a strategic enterprise product for enabling a standards-based SOA.
SOA programming model for implementing Web services, Part 4: An introduction to the IBM Enterprise Service Bus
Introduction to SOA programming model and ESB architecture
Building SOA solutions with the Service Component Architecture, Part 1
Introduction to Service Component Architecture
Getting started with WebSphere Enterprise Service Bus and WebSphere Integration developer
A simple tutorial to get started with using WebSphere ESB
Building a powerful, reliable SOA with JMS and WebSphere ESB, Part 1
Article on WebSphere ESB in IBM WebSphere Developer Technical Journal
Publish/subscribe interactions in WebSphere Process Server and WebSphere ESB
Learn how to use publish/subscribe interaction patterns
Developing custom mediations for WebSphere Enterprise Service Bus
Learn how to develop and use custom mediations
Advanced XSL transformation mediation of arrays in WebSphere ESB
Tutorial on how to use advanced XSL transformation mediations with WebSphere ESB
Introducing IBM WebSphere Service Registry and Repository, Part 1
Introduction to concepts and features of WebSphere Service Registry and Repository
WebSphere ESB developer resources page
Technical resources to help you use WebSphere ESB as a flexible connectivity infrastructure for integrating applications and services to support an SOA.
WebSphere ESB product page
Product descriptions, product news, training information, support information, and more.
WebSphere Enterprise Service Bus (ESB) information center
A single Eclipse-based Web portal to all WebSphere ESB documentation, with conceptual, task, and reference information on installing, configuring, and using WebSphere ESB.
WebSphere ESB documentation library
WebSphere ESB product manuals.
WebSphere ESB FAQs
Basic questions and answers about the new WebSphere ESB product and its relationship to other WebSphere products.
WebSphere ESB support
A searchable database of support problems and their solutions, plus downloads, fixes, problem tracking, and more.
WebSphere ESB article: Developing custom mediations
This article describes more complex uses of the custom mediation primitive.
WebSphere Integration Developer developer resources page
Technical resources to help you use the WebSphere Integration Developer IDE to render your existing IT assets as service components, encouraging reuse and efficiency as you build SOA-based integration solutions across WebSphere Process Server, WebSphere ESB, and WebSphere Adapters.
WebSphere Integration Developer product page
Product descriptions, product news, training information, support information, and more.
WebSphere Integration Developer information center
A single Eclipse-based Web portal to all WebSphere Integration Developer documentation, with conceptual, task, and reference information on installing, configuring, and using your WebSphere Integration Developer environment.
WebSphere Integration Developer information roadmap
Roadmap of articles and resources to help you with installation, migration, administration, development, troubleshooting, and understanding the underlying technology.
WebSphere Integration Developer documentation library
WebSphere Integration Developer product manuals.
WebSphere Integration Developer support
A searchable database of support problems and their solutions, plus downloads, fixes, problem tracking, and more.
developerWorks WebSphere Business Integration zone
For developers, access to WebSphere Business Integration how-to articles, downloads, tutorials, education, product info, and more.
WebSphere Business Integration products page
For both business and technical users, a handy overview of all WebSphere Business Integration products
Product-specific forums where you can get answers to your technical questions and share your expertise with other WebSphere users.
Most popular WebSphere trial downloads
No-charge trial downloads for key WebSphere products.
Trial downloads for IBM software products
No-charge trial downloads for selected IBM® DB2®, Lotus®, Rational®, Tivoli®, and WebSphere® products.
Safari Bookshelf: e-library designed for developers
Complete search and download access to thousands of technical books for a one-time subscription fee. Free trial for new subscribers.
developerWorks technical events and Webcasts
Free technical sessions by IBM experts that can accelerate your learning curve and help you succeed in your most difficult software projects. Sessions range from one-hour Webcasts to half-day and full-day live sessions in cities worldwide.
Ongoing, free-form columns by software experts, to which you can add your comments. Check out Grady Booch's blog on software architecture.
Nay Lin is a senior software engineer at the IBM Software Services for WebSphere Business Integration Proof-of-Concept Lab in Burlingame, California. He is an IBM certified IT specialist with extensive experience using WebSphere Business Integration products and developing J2EE and SOA applications using Rational Software Architect and WebSphere Integration Developer. You can contact Nay at email@example.com.