Service Oriented Integration with ServiceMix

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    5 Favorites

    Service Oriented Integration with ServiceMix - Presentation Transcript

    1. Service Oriented Integration With Apache ServiceMix William G Henry william_henry@mac.com Presentation By Bruce Snyder bsnyder@apache.org
    2. Agenda  Enterprise Service Bus  Java Business Integration  Apache ServiceMix ESB  Apache Camel (intro) 2
    3. What is an ESB? 3
    4. What is an ESB? \"An Enterprise Service Bus (ESB) is a new architecture that exploits Web services, messaging Service Bus (ESB) is a and transformation. ESBs \"An Enterprise middleware, intelligent routing, new architecture that act as a lightweight, ubiquitous integration backbone through which software exploits Web services, messaging middleware, intelligent services and application components flow.” (Gartner) routing, and transformation. ESBs act as a lightweight, ubiquitous integration backbone through which software services and application components flow.” (Gartner) 4
    5. What is an ESB? An ESB acts as a shared messaging layer for connecting applications and other services throughout ana sharedcomputing infrastructure. It supplements its An ESB acts as enterprise messaging layer for connecting core asynchronous messaging backbone with intelligent transformation and applications and other services throughout an enterprise routing to ensure messages are passed reliably. Services participate in the ESB using either web services messaging supplements its core computing infrastructure. It standards or JMS (LooselyCoupled.com) asynchronous messaging backbone with intelligent transformation and routing to ensure messages are passed reliably. Services participate in the ESB using either web services messaging standards or JMS (LooselyCoupled.com) 5
    6. What is an ESB? An ESB is an open standards, message-based, distributed, integration solution An ESB is an open standards, message-based, distributed, that provides routing, invocation, and mediation services to facilitate the interactions of disparate distributed information technology resources integration solution that provides routing, invocation, and (applications, services, information, platforms) in a reliable manner. (Brenda Michelson, Elemental Links) facilitate the interactions of disparate mediation services to distributed information technology resources (applications, services, information, platforms) in a reliable manner. (Brenda Michelson, Elemental Links) 6
    7. Do I need an ESB?  ESB Planning Process 7
    8. What is JBI? 8
    9. What is JBI?  JBI defines an architecture that allows the construction of integration systems from plug-in components, that interoperate through the method of mediated message exchange.  (JBI 1.0 Spec) 9
    10. Java Business Integration 10
    11. Java Business Integration 11
    12. JBI Normalized Message 12
    13. JBI Packaging 13
    14. Apache ServiceMix http://servicemix.apache.org/  14
    15. Apache ServiceMix Architecture 15
    16. ServiceMix Features  Supports many protocols  File, FTP, HTTP/S, JMS, SMTP, SOAP, TCP, XMPP  Support many engines  Apache Camel, Apache CXF, Apache ODE, Drools, OS Workflow, POJOs, Quartz, Scripting, Saxon XQuery and XSLT, WS-Notification  Support for Security  JAAS, WS-Security  Web Container/App Server Integration  Geronimo, JBoss, Jetty, Tomcat, Weblogic, Websphere 16
    17. Apache Software Foundation Apache Software Foundation 17
    18. Message Routing 18
    19. Message Routing 19
    20. Example 20
    21. Configuration 21
    22. file-poller-su  <beans xmlns:file='http://servicemix.apache.org/file/1.0'  xmlns:myApp=\"http://com.mycompany/myapp\">  <file:poller service=\"myapp:file\"  endpoint=\"poller\"  file=\"file:///Users/bsnyder/poller/inbox\"  targetService=\"myapp:wiretap\"  targetEndpoint=\"logger\" />  </beans> 22
    23. eip-wiretap-su  <beans xmlns:eip=\"http://servicemix.apache.org/eip/1.0\"  xmlns:myapp=\"http://mycompany.com/myapp\">  <eip:wire-tap service=\"myapp:wiretap\" endpoint=\"endpoint\">  <eip:target>  <eip:exchange-target service=\"myapp:cbr\" />  </eip:target>  <eip:inListener>  <eip:exchange-target service=\"myapp:persist\" />  </eip:inListener>  </eip:wire-tap>  </beans> 23
    24. camel-persist-su  public class PersistOrderRoute extends RouteBuilder {  public void configure() {  from(\"jbi:endpoint:http://mycompany.com/persist/order\")  .convertBodyTo(Order.class)  .to(\"jpa:com.mycompany.Order?persistenceUnit=order- proc\")  .convertBodyTo(Order.class);  }}  -------------------------------------------------  <beans xmlns:camel=”http://activemq.apache.org/camel\">  <camel:camelContext id=\"camel\">  <package>com.mycompany.persistence</package>  </camel:camelContext>  </beans> 24
    25. eip-cbr-su  <beans xmlns:eip=\"http://servicemix.apache.org/eip/1.0\"  xmlns:myapp=\"http://mycompany.com/myapp\">  <eip:content-based-router service=\"myapp:cbr\"  endpoint=\"endpoint\">  <eip:rules>  <eip:routing-rule>  <eip:predicate>  <eip:xpath-predicate  xpath=\"/message/cheese/text() = 'gouda'\" />  </eip:predicate>  <eip:target>  <eip:exchange-target service=\"myapp:queue1\" />  </eip:target>  </eip:routing-rule>  ... 25
    26. eip-cbr-su  ...  <eip:routing-rule>  <eip:predicate>  <eip:xpath-predicate  xpath=\"/message/cheese/text() = 'swiss'\" />  </eip:predicate>  <eip:target>  <eip:exchange-target service=\"myapp:queue2\" />  </eip:target>  </eip:routing-rule>  <eip:routing-rule>  <eip:target>  <eip:exchange-target service=\"myapp:queue3\" />  </eip:target>  </eip:routing-rule>  </eip:rules>  </eip:content-based-router> 26
    27. jms-producer-su  <beans xmlns:jms=\"http://servicemix.apache.org/jms/1.0\"  xmlns:myapp=\"http://mycompany.com/myapp  xmlns:amq=\"http://activemq.org/config/1.0\">  <jms:endpoint service=\"myapp:queue1\"  endpoint=\"myProvider\"  role=\"provider\"  destinationStyle=\"queue\"  jmsProviderDestinationName=\"queue1\"  connectionFactory=\"#connectionFactory\" />  <jms:endpoint service=\"myapp:queue2\"  endpoint=\"myProvider\"  role=\"provider\"  destinationStyle=\"queue\"  jmsProviderDestinationName=\"queue2\"  connectionFactory=\"#connectionFactory\"/> 27
    28. jms-producer-su  ...  <jms:endpoint service=\"myapp:queue3\"  endpoint=\"myProvider\"  role=\"provider\"  destinationStyle=\"queue\"  jmsProviderDestinationName=\"queue3\"  connectionFactory=\"#connectionFactory\"/>  <amq:connectionFactory id=\"connectionFactory\"  brokerURL=\"tcp://localhost:61616\" />  </beans> 28
    29. JBI Packaging 29
    30. Distribution of ServiceMix Containers 30
    31. Eclipse IDE Tooling For ServiceMix  Eclipse SOA Tooling Platform (STP) Project  http://eclipse.org/stp  IONA FUSE Eclipse Tooling  http://open.iona.com/wiki/display/ProdInfo/FUSE+Eclipse+Tools  Spagic  http://spagic.com/  Sopera  http://sopera.de/en/products/sopera-servicemixtools/ Eclipse SOA Tools Platform (STP) Project 31
    32. Eclipse Tooling Eclipse SOA Tools Platform (STP) Project 32
    33. What is Apache Camel? http://activemq.apache.org/camel/  33
    34. What is EIP? 34
    35. Example Pattern: Content Based Router RouteBuilder builder = new RouteBuilder() { public void configure() { from(\"seda:a\").choice() .when(header(\"foo\").isEqualTo(\"bar\")).to(\"seda:b\") .when(header(\"foo\").isEqualTo(\"cheese\")).to(\"seda:c\") .otherwise().to(\"seda:d\"); } }; 35
    36. Example Pattern: Content Based Router <camelContext id=\"buildSimpleRouteWithChoice\" xmlns=\"http://activemq.apache.org/camel/schema/spring\"> <route> <from uri=\"seda:a\"/> <choice> <when> <predicate> <header name=\"foo\"/> <isEqualTo value=\"bar\"/> </predicate> <to uri=\"seda:b\"/> </when> <when> <predicate> <header name=\"foo\"/> <isEqualTo value=\"cheese\"/> </predicate> <to uri=\"seda:c\"/> </when> <otherwise><to uri=\"seda:d\"/></otherwise> </choice> </route> </camelContext> 36
    37. What’s Coming in ServiceMix 4.0 Apache ServiceMix 4.0 37
    38. ServiceMix 4.0 Building Blocks  Runtime: OSGi (Apache Felix)  JBI support still intact!  NMR is a OSGi service  Message Broker: Apache ActiveMQ  Web Services: Apache CXF  Routing Engine: Apache Camel 38
    39. Thank You for Attending! Questions? 39
    40. Visualization 40
    41. Camel Makes Routing Much Easier! from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“<ack/>”)). handle(Throwable.class). setFaultBody(constant(“<nack/>”)); from((“activemq:queue:requests?transacted=true”). process(requestTransformer). to(“http://host:8080/Request”). filter(xpath(“//nack”)). process(nackTransformer). to(“jdbc:store”); from(“http://localhost:8080/responses/”). tryBlock(). to(“activemq:queue:responses”). setOutBody(constant(“<ack/>”)). handle(Throwable.class). setFaultBody(constant(“<nack/>”)); from(“activemq:queue:responses?transacted=true”). process(responseTransformer). to(“jdbc:store”); from(“http://localhost:8080/pull/”). to(“jdbc:load”); 41

    + ghesslerghessler, 2 years ago

    custom

    1846 views, 5 favs, 0 embeds more stats

    Presented to Colorado Springs Open Source Users Gro more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1846
      • 1846 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 5
    • Downloads 116
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories