Topic 2
Enterprise Service Bus
Assoc.Prof.Dr. Thanachart Numnondawww.imcinstitute.com
2
Agenda
What is ESB?
ESB Differences
What is JBI?
OpenESB &GlassFish
Usage Scenario
3
What is ESB?
SOA Framework Recap
External/Internal Systems
Build Re-usable Services (ESB)
Business Process Management (BPEL)
User Interface + Single Window (Portal)
User Interface Dashboard (KPI)
ESB
Enterprise Service Bus (ESB) is the software middleware
ESB acts as a mediator between different, often incompatible protocols and middleware products
ESB is the backbone of SOA
You can't buy SOA, but you can buy an ESB
The role of ESB in SOA
ESB Core Capabilities
Features of an ESB
• Web Services Support– ESB offers an ability to invoke SOAP and WSDL
based Web Services
• Adapters– Many ESB vendors will provide adapters to integrate
with different thrd-part applications, such as PeopleSoft, SAP
– Used for applications which do not directly have SOAP or XML interface
• Invocation– ESB supports synchronous and asynchronous calls to
services and sometimes callbacks
Features of an ESB (Cont.)
• Mediation and protocol independence– Variety of protocols can be reconciled for complex
route across a variety of platform– Allows to connect with different protocols such as
HTTP, FTP, SMTP, JDBC
• Routing– Allows us to route the messages to different services
based on their content, origin or other attributes
• Transformation– Data represented as XML can be transformed using
XSLT or XQuery before they are delivered to services.
– Some ESB supports various XML, e.g. HL7, SWIFT
Features of an ESB (Cont.)
• Orchestration– Offers the ability to coordinate multiple services to
expose them as a single proxy service– Many ESBs delegate this functionality to a BPEL
engine
• Security– Provides additional security capabiulity, SSL, SAML
• Control over the deployment, usage and maintenance of services
ESB Features
Benefits of ESB
• Reduce time to integrate new and existing applicatioms
• Increase flexibility because system dependencies are reduced
• Simultaneous centralized management of services• Centralized management ability (e.g. BAM)• Encourage use of industry standard interface• Greater agility and responsiveness to change
ESB Components
ESB Components
• There is no single product that can effectively do all of the capabilities required of an ESB
• An ESB can be broken down into the following components
– Mediator– Service Registry– Choreographer– Rules Engine
Mediator
• Core capability of an ESB• Component responsibilities
– Routing– Communication– Message Transformation– Message Enhancement– Protocol Transformation– Message Processing– Error Handling– Service Orchestration– Transaction Management– Security
Service Registry
• Component responsibility– Service mapping
• Can be used for Policy based information• Very few products in the industry provide this
Choreographer
• Component responsibilities– Message Processing– Process Choreographer– Transaction management– Security
• Choreographer would be responsible for these capability only if it is the entrypoint into the ESB
Rules Engine
• Component responsibilities– Routing– Message Transformation– Message Enhancement
Mediator
Benefits of ESB
• Reduce time to integrate new and existing applicatioms
• Increase flexibility because system dependencies are reduced
• Simultaneous centralized management of services• Centralized management ability (e.g. BAM)• Encourage use of industry standard interface• Greater agility and responsiveness to change
ESB Differences
Heterogeneous ESBs
ESB Differences
• Point-to-Point Connection– consumer has to know the endpoint, it sends each request to
a specific receiver– The problem with this type of connection is that the call fails
if the physical receiver is not available.• Mediating Conenction
– identifies the provided service by a tag or symbolic that the ESB interprets to find an appropriate provider
– ESB plays the role of a mediator or broker
Point-to-Point Connection
Mediating Connection
Interceptor (based on Point-to-Point)
ESB Differences
• Protocol Driven ESB– the ESB defines a protocol, and the providers and consumers
send and receive messages according to this protoco– Example; Web Services, which require a SOAP protocol,
• API Driven ESB– the ESB defines platform-specific APIs (such as Java
interfaces), and the providers and consumers use these APIs for service implementations and service calls (see Connecting to an API-driven ESB).
Protocol-Driven ESB
API-Driven ESB
Commercial ESBs
• IBM WebSphere ESB • Sonic ESB• Oracle Service Bus• Software AG/WebMethods ESB• Microsoft Biztalk• TIBCO ActiveMatrix and BusinessWorks
Opensource ESB
• Mule• Apache ServiceMix• OpenESB (GlassFish v2)• Project Fuji (OpenESB v3)
What is JBI?
Why JBI?
• Many ESB products in the market• Each has its own pattern and specification• Each may use different protocols and different
forms of communication• Need different ways / patterns of implementation• Need a ESB standard to avoid vendor lock-in• The ideas is this: someone implements the spec and
then they can in turn implement engine that are pluggable within that container.
What is JBI?
• JBI (Java Business Integration) is a specification published by JCP (JSR 208)
• JBI is a message-based, pluggable meta-container• It is a container of containers.• JBI allows pluggable components to be added into
a standard architecture
What Is JBI?
• Standard “meta-container” for integrated services
• Provides for plug-in:– Service Engines (SE):
business logic– Binding Components:
communications protocols
• Standard deployment / Management model
• Loose coupling via WSDL message exchanges between WSDL described Services
JBI Architecture
JBI Architecture
JBI
Service Engines
• Sevice Engines (SEs) are JBI components that enable pluggable business logic
• SEs is a standard container for hosting WSDL-defined service providers as well as service consumers used internally by JBI
• Business Logic get deployed into SE• SE get installed into JBI runtime• OpenESB offers varous SEs
– BPEL SE– XSLT SE– JavaEE SE
Binding Components
• Binding Components (BCs) provides connectivity services to SE
• BCs offer protocol independence• BCs provide transport protocols for external
services• BCs converts a message that is bound to a specific
protocol or transport into the normalized protocols• Example BCs
– File, HTTP, FTP, SMTP, Database (JDBC)– CICS, DCOM, CORBA
Normalized Message Router
• NMR mediates the message exchange between Ses and Bcs within the framework
• NMR is the core of the bus• Allows services to interoperate by passing
messages between all the components• BC and SE are decoupled• NMR is bidirectional
JBI and Composite Application
Overview of Message Routing
JBI Runtime
JBI Portability Model
• Components should be portable (SEs and BCs)• Service units are not portable across SEs/BCs from
different vendors• Example: moving an application from OpenESB
toServiceMix– Install all Open ESB Service Engines and Binding
Components that you used, in ServiceMix– Deploy the application into ServiceMix's runtime
JBI Specification Example
OpenESB & GlassFish
What is Open ESB?
• Project Open ESB implements an Enterprise Service Bus (ESB) runtime using JBI as the foundation
– This allows easy integration of web services to create loosely coupled enterprise class composite applications.
• It also provides various tools for the development, deployment, and management of composite applications
49
Open ESB Architecture
IDE Web Server
BPELEditor
Java EESE JBI Bus
XSLTSE
HTTPBC
FTPBC
FTPBC
Many MoreSEs…
FTPBC
Many MoreBCs…
App Server
XSLTEditor
CompositeApplication
Project
IEP Editor
CompositeApplication
Manager
Runtime
BPELSE
Java EE
EJBs
Servlets
Java EESE JBI Bus
XSLTSE
HTTPBC
FTPBC
FTPBC
Many MoreSEs…
FTPBC
Many MoreBCs…
App Server
BPELSE
Java EE
EJBs
Servlets
Design-Time Management
3rd PartyService
Platforms
3rd PartyService
Platforms
Open Standard Based Service Bus
WS-Reliable MessagingWS-SecurityWS-FastInfoSet, …
Many MoreEditorsMany More
Editors
IEPMonitor
BPELMonitor
XSLTMonitor
Many MoreEditorsMany MoreMonitors
JBI Support in GlassFish
• A JBI runtime has been integrated with GlassFish V2• GlassFish admin console now supports JBI• Java EE Service Engine act as the bridge between Java
EE applications and JBI• A Java EE application archive (ear/war/jar) can be
packaged in a JBI composite application• Expose JMX to tools• JBI runtime has been enhanced to adhere to the
appserver clustering architecture– Each instance in the appserver cluster will also have a JBI
runtime in it
JBI in Admin Console
OpenESB Web Site
• https://open-esb.dev.java.net/• Latest GlassFishESB v2.1 with NetBeans 6.1• Documents / Examples• 43 JBI Components
JBI Components : Examples• Service Engines
– BPEL SE– XSLT SE– JavaEE SE– IEP SE– POJI SE– Scripting SE– WLM SE
Binding CompsMQSeries BCDatabase BCHL7 BCSAP BCSMTP BCHTTP BCJMS BCFile BCCICS BCDCOM BCCORBA BC...
• Nolonger Maintain– JavaScript SE– Aspect SE– JDBC BC– SMTP BC– SQL SE
Mule
ServiceMix
ESB Comparison
59
ESB (Forrester Wave; 2009)
Usage Scenario
Usage Scenario: Loan Processing• Loan Requestor Service:
– LoanRequestProcess• WS-I BP• BPEL Orchestration
– LoanProcessor• JavaEE
– TransformReport• XSLT
– LoanReportStore• Business Partner thru FTP
– LoanReportMailer• Legacy thru JMS
NMR
BPEL XSLTJavaEE
WS-I BP JMS File
JBI-based
Infrastructure
NMR
Loan
Request
Process
Transform
Report
Loan
Processor
EJB
LoanRS WS ReportMail ReportStore
BPEL XSLTJavaEE
FileJMSWS-I BP
JBI-based
Infrastructure
NMR
Loan
Request
Process
Transform
Report
Loan
Processor
EJB
LoanRS WS ReportMail ReportStore
BPEL XSLTJavaEE
FileJMSWS-I BP
NMR
Loan
Request
Service
Transform
Report
Loan
Processor
EJB
LoanRS WS ReportMail ReportStore
BPEL XSLT JavaEE
FileJMSWS-I BP
Architecture
Refactoring
NMR
Loan
Request
Service
Transform
Report
Loan
Processor
LoanRS WS ReportMail
BPEL XSLT RulesEngine
ReportStoreFileJMSWS-I BP
LoanRS QJMS
ReportStore
JavaEE
Resources
Some contents are borrowed from the presentation slides of Sang Shin, Java™ Technology Evangelist, Sun Microsystems, Inc.
Business Process Execution Language for Web Services, Matjaz B. Juric
The Role of the Enterprise Service Bus, Mark Richards Java SOA Cookbook, Eben Hewitt Building SOA-Based Composite Applications Using
NetBeans IDE 6, David Salter SOA in Practice, Nicolai M. Josuttis