introduction to es bs mule

24
By Achyuta Laxmi

Upload: achyuta-lakshmi

Post on 15-Apr-2017

309 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Introduction to es bs   mule

ByAchyuta Laxmi

Page 2: Introduction to es bs   mule

What is an ESB? Java Business Integration (JBI) Mule Architecture Mule in the Real World

Page 3: Introduction to es bs   mule

[Mul] Mule Architecture Guide. http://mule.mulesource.org/display/MULE/Architecture+Guide

September [mule-user archive]

Page 4: Introduction to es bs   mule

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

Page 5: Introduction to es bs   mule

Gartner Group

Giant exercise in Separation of Concerns

[Ric]

Page 6: Introduction to es bs   mule

[Ric]

Page 7: Introduction to es bs   mule

Routing Message Transformation Message Enhancement Protocol Transformation Service Mapping

Message Processing Process Choreography Service Orchestration Transaction Management Security

[Ric]

Page 8: Introduction to es bs   mule

General case

Client calls Choreographer Client calls Mediator

vs

Page 9: Introduction to es bs   mule

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

Page 10: Introduction to es bs   mule

XSLT – message transformation PXE – choreography Groovy – scripting

[Ric]

Page 11: Introduction to es bs   mule

Service Mix

Binding Components

Service Engines

Page 12: Introduction to es bs   mule

[Mule]

Page 13: Introduction to es bs   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

Page 14: Introduction to es bs   mule

http://myapp.com pop3://[email protected]→xml xml→pop3

myUMO (xml→xml)

[Mule]

Page 15: Introduction to es bs   mule

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

Page 16: Introduction to es bs   mule

Requires a component resolver (e.g., Spring or Pico) for Instantiation of UMOsConfiguration of UMOs

Event processingAsynchronousSynchronousRequest-Response

[Mule]

Page 17: Introduction to es bs   mule

Application logic

Application glue

Mule glue

[Mule]

Page 18: Introduction to es bs   mule

[Mule]

Page 19: Introduction to es bs   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>

Page 20: Introduction to es bs   mule

<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>

Page 21: Introduction to es bs   mule

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>

Page 22: Introduction to es bs   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}

Page 23: Introduction to es bs   mule

Routing Message Transformation Message Enhancement Protocol Transformation Service Mapping

Message Processing Process Choreography Service Orchestration Transaction Management Security

XX

√√√√

Page 24: Introduction to es bs   mule

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