Upload
achyuta-lakshmi
View
310
Download
0
Embed Size (px)
Citation preview
ByAchyuta Laxmi
What is an ESB? Java Business Integration (JBI) Mule Architecture Mule in the Real World
[Mul] Mule Architecture Guide. http://mule.mulesource.org/display/MULE/Architecture+Guide
September [mule-user archive]
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
Gartner Group
Giant exercise in Separation of Concerns
[Ric]
[Ric]
Routing Message Transformation Message Enhancement Protocol Transformation Service Mapping
Message Processing Process Choreography Service Orchestration Transaction Management Security
[Ric]
General case
Client calls Choreographer Client calls Mediator
vs
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
XSLT – message transformation PXE – choreography Groovy – scripting
[Ric]
Service Mix
Binding Components
Service Engines
[Mule]
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
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
Requires a component resolver (e.g., Spring or Pico) for Instantiation of UMOsConfiguration of UMOs
Event processingAsynchronousSynchronousRequest-Response
[Mule]
Application logic
Application glue
Mule glue
[Mule]
[Mule]
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>
<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://[email protected]"/><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>
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>
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}
Routing Message Transformation Message Enhancement Protocol Transformation Service Mapping
Message Processing Process Choreography Service Orchestration Transaction Management Security
XX
√√√√
√
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