Introduction to ESBs:
Mule
UC San Diego
CSE 294
November 14, 2008
Barry Demchak
Agenda
 What is an ESB?
 Java Business Integration (JBI)
 Mule Architecture
 Mule in the Real World
Source Material
 [Ric] Mark Richards, “The Role of the
Enterprise Service Bus”, NFJS, Oct 23,
2006. http://www.infoq.com/presentations/Enterprise-Service-Bus
 [Mul] Mule Architecture Guide.
http://mule.mulesource.org/display/MULE/Architecture+Guide
 September [mule-user archive]
Problems Addressed by ESBs
 Integration of existing systems
 Refactorable in real time
 Flexibility to change as requirements change
 Decentralized (service-location transparency)
 Scalable (point solutions to full enterprise)
 Sharing of services across enterprise
 Ability to separate Business Services from
Service Implementations
 Leverages standards
Definition(s)
Gartner Group
Giant exercise in Separation of Concerns
[Ric]
Definitions (more)
www.datapower.com
[Ric]
ESB Features
 Routing
 Message Transformation
 Message Enhancement
 Protocol Transformation
 Service Mapping
 Message Processing
 Process Choreography
 Service Orchestration
 Transaction Management
 Security
[Ric]
An ESB Blueprint
General case
Client calls Choreographer Client calls Mediator
vs
[Ric]
Java Business Integration (JBI)
 JSR-208 Standard
 Defines service engines (SE – choreographers,
transformers, security, etc) and binding components
(BC – xml, http, etc)
 Concerned with how internal customers (not external
services) interact with service providers
COTS
[Ric]
JBI Example
 XSLT – message transformation
 PXE – choreography
 Groovy – scripting
[Ric]
JBI Case Study: Service Mix
Service Mix
Binding Components
Service Engines
[Ric]
Mule Architecture
[Mule]
Mule Flow View
 Channel – a method of connecting between two points (not part
of Mule)
 Connector – a transport provider (e.g., http, jms, soap, smtp,
etc) implementing message receive and message dispatch
 Transformer – converts message structure/format (e.g., http to
xml)
 Router – moves messages amongst UMOs and connectors
[Mule]
Mule Connector View
http://myapp.com pop3://user@userland.comhttp→xml xml→pop3
myUMO (xml→xml)
[Mule]
Mule Transports
 AS400 DQ
 EJB
 E-mail
 File
 FTP
 HTTP
 IMAP
 JDBC
 JMS
 Multicast
 POP3
 Quartz
RMI
 Servlet
 SMTP
 SOAP
 SSL
 Stream
 TCP
 UDP
 VFS
 VM
 WSDL
 XMPP
UMO Execution
 Requires a component resolver (e.g., Spring
or Pico) for
 Instantiation of UMOs
 Configuration of UMOs
 Event processing
 Asynchronous
 Synchronous
 Request-Response
[Mule]
Mule Programming Model
Application logic
Application glue
Mule glue
[Mule]
Mule Routers
[Mule]
Selective Consumer (inbound)
 Applies one or more filters to incoming payload, then
branch based on filter
<inbound-router>
<catch-all-strategy
className="org.mule.routing.ForwardingCatchAllStrategy">
<endpoint address="jms://topic:error.topic"/>
</catch-all-strategy>
<router
className="org.mule.routing.inbound.SelectiveConsumer">
<filter expression="msg/header/resultcode = 'success'"
className="org.mule.routing.filters.xml.JXPathFilter"/>
</router>
</inbound-router>
Filtering Outbound (outbound)
<outbound-router>
<catch-all-strategy
className="org.mule.routing.ForwardingCatchAllStrategy">
<endpoint="jms://error.queue"/>
</catch-all-strategy>
<router className="org.mule.routing.outbound.FilteringOutboundRouter">
<endpoint address="smtp://ross@muleumo.org"/>
<filter expectedType="java.lang.Exception"
className="org.mule.routing.filters.PayloadTypeFilter"/>
</router>
<router className="org.mule.routing.outbound.FilteringOutboundRouter">
<endpoint address="jms://string.queue"/>
<filter className="org.mule.routing.filters.logic.AndFilter">
<left-filter expectedType="java.lang.String"
className="org.mule.routing.filters.PayloadTypeFilter"/>
<right-filter pattern="the quick brown (.*)"
className="org.mule.routing.filters.RegExFilter"/>
</filter>
</router>
</outbound-router>
Nested Router
 Allows synchronous callouts that can be intercepted and routed
<mule-descriptor name="InvokerComponent"
implementation="org.mule.foo.Invoker">
<inbound-router>
<endpoint address="jms://Invoker.in"/>
</inbound-router>
<nested-router>
<binding interface="org.mule.foo.HelloInterface">
<endpoint
address="axis:http://192.168.2.14:81/services/HelloWebComponent?
method=helloMethod" remoteSync="true"/>
</binding>
</nested-router>
<outbound-router>
<router
className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="jms://Invoker.out"/>
</router>
</outbound-router>
</mule-descriptor>
Dog Days with Mule
 September [mule-user archive]
 How to get a hold of Endpoint object from the
component? {mule}
 Failed to throw UserDefined Exception {jaxws}
 Failed to invoke lifecycle “start” using CXF in
JBOSS {cxf}
 Problem in loading xsd files {mule}
 Problems with RemoteDispatcher {mule}
 Inject MuleClient Singleton with Spring {mule}
 Mule transaction support {mule}
ESB Features
 Routing
 Message Transformation
 Message Enhancement
 Protocol Transformation
 Service Mapping
 Message Processing
 Process Choreography
 Service Orchestration
 Transaction Management
 Security
X
X
√
√
√
√
√
Take Away Messages
 Mule’s generality results in great flexibility, but at the
cost of great complexity for users
 Mule is the focal point of ambiguity and difficulties
with many standards-based packages
 Mule delivers (to a degree) on:
 Integration, flexibility, decentralized operation,
scalability
 Mule doesn’t deliver (so much) on:
 Runtime refactoring, conceptualization

Introduction to es bs mule

  • 1.
    Introduction to ESBs: Mule UCSan Diego CSE 294 November 14, 2008 Barry Demchak
  • 2.
    Agenda  What isan ESB?  Java Business Integration (JBI)  Mule Architecture  Mule in the Real World
  • 3.
    Source Material  [Ric]Mark Richards, “The Role of the Enterprise Service Bus”, NFJS, Oct 23, 2006. http://www.infoq.com/presentations/Enterprise-Service-Bus  [Mul] Mule Architecture Guide. http://mule.mulesource.org/display/MULE/Architecture+Guide  September [mule-user archive]
  • 4.
    Problems Addressed byESBs  Integration of existing systems  Refactorable in real time  Flexibility to change as requirements change  Decentralized (service-location transparency)  Scalable (point solutions to full enterprise)  Sharing of services across enterprise  Ability to separate Business Services from Service Implementations  Leverages standards
  • 5.
    Definition(s) Gartner Group Giant exercisein Separation of Concerns [Ric]
  • 6.
  • 7.
    ESB Features  Routing Message Transformation  Message Enhancement  Protocol Transformation  Service Mapping  Message Processing  Process Choreography  Service Orchestration  Transaction Management  Security [Ric]
  • 8.
    An ESB Blueprint Generalcase Client calls Choreographer Client calls Mediator vs [Ric]
  • 9.
    Java Business Integration(JBI)  JSR-208 Standard  Defines service engines (SE – choreographers, transformers, security, etc) and binding components (BC – xml, http, etc)  Concerned with how internal customers (not external services) interact with service providers COTS [Ric]
  • 10.
    JBI Example  XSLT– message transformation  PXE – choreography  Groovy – scripting [Ric]
  • 11.
    JBI Case Study:Service Mix Service Mix Binding Components Service Engines [Ric]
  • 12.
  • 13.
    Mule Flow View Channel – a method of connecting between two points (not part of Mule)  Connector – a transport provider (e.g., http, jms, soap, smtp, etc) implementing message receive and message dispatch  Transformer – converts message structure/format (e.g., http to xml)  Router – moves messages amongst UMOs and connectors [Mule]
  • 14.
    Mule Connector View http://myapp.compop3://user@userland.comhttp→xml xml→pop3 myUMO (xml→xml) [Mule]
  • 15.
    Mule Transports  AS400DQ  EJB  E-mail  File  FTP  HTTP  IMAP  JDBC  JMS  Multicast  POP3  Quartz RMI  Servlet  SMTP  SOAP  SSL  Stream  TCP  UDP  VFS  VM  WSDL  XMPP
  • 16.
    UMO Execution  Requiresa component resolver (e.g., Spring or Pico) for  Instantiation of UMOs  Configuration of UMOs  Event processing  Asynchronous  Synchronous  Request-Response [Mule]
  • 17.
    Mule Programming Model Applicationlogic Application glue Mule glue [Mule]
  • 18.
  • 19.
    Selective Consumer (inbound) Applies one or more filters to incoming payload, then branch based on filter <inbound-router> <catch-all-strategy className="org.mule.routing.ForwardingCatchAllStrategy"> <endpoint address="jms://topic:error.topic"/> </catch-all-strategy> <router className="org.mule.routing.inbound.SelectiveConsumer"> <filter expression="msg/header/resultcode = 'success'" className="org.mule.routing.filters.xml.JXPathFilter"/> </router> </inbound-router>
  • 20.
    Filtering Outbound (outbound) <outbound-router> <catch-all-strategy className="org.mule.routing.ForwardingCatchAllStrategy"> <endpoint="jms://error.queue"/> </catch-all-strategy> <routerclassName="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="smtp://ross@muleumo.org"/> <filter expectedType="java.lang.Exception" className="org.mule.routing.filters.PayloadTypeFilter"/> </router> <router className="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="jms://string.queue"/> <filter className="org.mule.routing.filters.logic.AndFilter"> <left-filter expectedType="java.lang.String" className="org.mule.routing.filters.PayloadTypeFilter"/> <right-filter pattern="the quick brown (.*)" className="org.mule.routing.filters.RegExFilter"/> </filter> </router> </outbound-router>
  • 21.
    Nested Router  Allowssynchronous callouts that can be intercepted and routed <mule-descriptor name="InvokerComponent" implementation="org.mule.foo.Invoker"> <inbound-router> <endpoint address="jms://Invoker.in"/> </inbound-router> <nested-router> <binding interface="org.mule.foo.HelloInterface"> <endpoint address="axis:http://192.168.2.14:81/services/HelloWebComponent? method=helloMethod" remoteSync="true"/> </binding> </nested-router> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address="jms://Invoker.out"/> </router> </outbound-router> </mule-descriptor>
  • 22.
    Dog Days withMule  September [mule-user archive]  How to get a hold of Endpoint object from the component? {mule}  Failed to throw UserDefined Exception {jaxws}  Failed to invoke lifecycle “start” using CXF in JBOSS {cxf}  Problem in loading xsd files {mule}  Problems with RemoteDispatcher {mule}  Inject MuleClient Singleton with Spring {mule}  Mule transaction support {mule}
  • 23.
    ESB Features  Routing Message Transformation  Message Enhancement  Protocol Transformation  Service Mapping  Message Processing  Process Choreography  Service Orchestration  Transaction Management  Security X X √ √ √ √ √
  • 24.
    Take Away Messages Mule’s generality results in great flexibility, but at the cost of great complexity for users  Mule is the focal point of ambiguity and difficulties with many standards-based packages  Mule delivers (to a degree) on:  Integration, flexibility, decentralized operation, scalability  Mule doesn’t deliver (so much) on:  Runtime refactoring, conceptualization

Editor's Notes

  • #8 Routing – ability to channel a request to a particular service provider based on deterministic or variable routing criteria (e.g., static/deterministic, content-based, policy-based, or complex rule-based) Message Transformation – ability to convert the structure and format of the incoming business service request to the structure and format expected by the service provider (e.g., xml→xml, xml→Cobol Copybook, object→xml) Message Enhancement – ability to add or modify the information contained in the message as required by the service provider (e.g., date format conversion, supplemental data, data conversion, rules-based enhancement) Protocol Transformation – The ability to accept one type of protocol from the consumer as input (e.g., SOAP/JMS) and communicate to the service provider through a different protocol (e.g., IIOP) – concerned with message structure, not payload – has attributes of physical connection and logical connectivity Service Mapping – The ability to translate a business service into the corresponding service implementation and provide binding and location information (includes implementation service name, service protocols and binding information, protocol-specific information, service-specific routing information) Message Processing – The ability to manage state and perform request management by accepting an input request and ensuring delivery back to the client via message synchronization Process Choreography – The ability to manage complex business processes that require the coordination of multiple business services to fulfill a single business service request (usually BPEL-based, often a manifestation of a use case or business process) Service Orchestration – The ability to manage the coordination of multiple implementation services (usually inter-service communication or aggregate services) Transaction Management – The ability to provide a single unit of work for a business service request by providing a framework for the coordination of multiple resources across multiple disparate services (e.g., compensatory transactional framework, WS-Coordination or JSR-95 Activity Service) Security – The ability to protect enterprise services from unauthorized access (e.g., Authentication, Authorization, Auditing, and Administration via access to external managers)
  • #9 Choreographer entrypoint (containing business processes and rules) requires that all services have BPEL coordination. Problems with performance, maintenance, and complexity. Common vendor solution. Mediator entrypoint allows choreography where appropriate. Good scalability, performance, reduced complexity. Avoids layers … and mediators are fast (~ms). Choreographer is just another service provider.
  • #10 Create standards-based architecture for integrating middleware components to perform ESB capabilities Concerned with how internal customers (not external services) interact with service providers – transformation, security, etc. Defines service engines (SE – choreographers, transformers, security, etc) and binding components (BC – xml, http, etc)
  • #11 avoids vendor lockin incentivizes best of breed SE and BC Not addressing federation of ESBs
  • #13 Mule is a lightweight UMO container UMO = Universal Messaging Objects (POJO) UMOs are endpoints that know how to send and receive requests
  • #17 Constructor is called by component resolver to create object Initialize called when component is registered with Mule model Start is called when the component (server/UMO) is started onCall is called when event is received for component … can resolve to any method within UMO Stop is called when Mule server is stopped Dispose is called when Mule server is shut down
  • #24 Routing – ability to channel a request to a particular service provider based on deterministic or variable routing criteria (e.g., static/deterministic, content-based, policy-based, or complex rule-based) Message Transformation – ability to convert the structure and format of the incoming business service request to the structure and format expected by the service provider (e.g., xml→xml, xml→Cobol Copybook, object→xml) Message Enhancement – ability to add or modify the information contained in the message as required by the service provider (e.g., date format conversion, supplemental data, data conversion, rules-based enhancement) Protocol Transformation – The ability to accept one type of protocol from the consumer as input (e.g., SOAP/JMS) and communicate to the service provider through a different protocol (e.g., IIOP) – concerned with message structure, not payload – has attributes of physical connection and logical connectivity Service Mapping – The ability to translate a business service into the corresponding service implementation and provide binding and location information (includes implementation service name, service protocols and binding information, protocol-specific information, service-specific routing information) Message Processing – The ability to manage state and perform request management by accepting an input request and ensuring delivery back to the client via message synchronization Process Choreography – The ability to manage complex business processes that require the coordination of multiple business services to fulfill a single business service request (usually BPEL-based, often a manifestation of a use case or business process) Service Orchestration – The ability to manage the coordination of multiple implementation services (usually inter-service communication or aggregate services) Transaction Management – The ability to provide a single unit of work for a business service request by providing a framework for the coordination of multiple resources across multiple disparate services (e.g., compensatory transactional framework, WS-Coordination or JSR-95 Activity Service) Security – The ability to protect enterprise services from unauthorized access (e.g., Authentication, Authorization, Auditing, and Administration via access to external managers)