SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Do we need ESB any
      more?
    Artur Karaźniewicz
About me
•   Artur Karaźniewicz - Chief Integration
    And Solution Architect, Integration Team
    Leader - Allianz Poland

•   Working with Java since 1999 (JServ
    anybody?)

•   Experience in Financial Services
What’s an ESB?
First things first, but not necessarily in that order.
                      -- Doctor Who
What’s an ESB
Enterprise Service Bus - term first coined by
Gartner around 2002 (although few others claim
They coined the term before)

  (Enterprise Service Bus) Universal integration backbone. An
      ESB acts as a shared messaging layer for connecting
    applications and other services throughout an enterprise
         computing infrastructure. It supplements its core
      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 the Java Message System
                               (JMS).
What’s an ESB
Sonic Software, one of the first ESB
bandwagon members has it's own definition



      An ESB is software infrastructure that simplifies the
 integration and flexible reuse of business components using a
    service-oriented architecture. An ESB makes it easy to
  dynamically connect, mediate and control services and their
                           interactions.
              -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
What’s an ESB
IONA has little bit different perception what
ESB actually is


 In general we agree with Sonic's requirements for an
    ESB, at a technical level when it comes to how to
  meet those requirements we think they have got it
 all wrong. [...] Specifically, he said that Iona believes
   Sonic's ESB is "overly JMS [Java Message Service]
                    and broker based".
             -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
What’s an ESB
PolarLake, another ESB Vendor adds another view




     Great to see Sonic Software's definition converge
       towards ours. In particular, they are correctly
   identifying that mediation - a term we have used for
      quite some time - is the core feature of an ESB.
              -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
So what’s ESB after all?
    Odd that we think definitions are definitive.
                     -- Larry Wall, Perl Creator
So What’s an ESB, after all?

    WS Stack                  Adapters/Connectors




      Routing and mediation




      Messaging Backbone          Legacy Systems
So What’s an ESB, after all?
 • A little bit of distribution mechanisms
    • Bus Architecture vs. Hub And Spoke
 • Strong monitoring and management
   capabilities
 • With little pinch of flexibility...
What ESB is not?
• It’s not an Application Server!
• It’s not centralized nor monolithic
• It’s not BPMS (Business Process
  Management Suite)
• It’s not MOM
What’s wrong with
     ESB, then?
For every complex problem, there is a solution that is simple,
                     neat, and wrong.
                     -- Henry Louis Mencken
What’s wrong with ESB?




      ESB
What’s wrong with ESB?
• It looks Great!..
• ...But in practice - most ESBs are typical 80/20
   solutions (or simple, neat and wrong)

    • 80% of (simple) things are very easy to
        implement using of the shelve ESB
    • 20% of things are extremely difficult to
        implement using of the shelve ESB

We have 80% of Perl6 done and we are now working on the next 80%.
             -- Anonymous Coward, slashdot.org, Perl 6 discussion
Examples?
Excerpt from (some) ESB documentation


    The Oracle Database adapter does not
    support the following data types:
    * PL/SQL TABLE
    * TABLE
    * VARRAY
    * OBJECT
    etc..
Examples?
Excerpt from (some) ESB documentation




    The Oracle Database adapter accepts a
    character data for a NUMBER field
    without throwing an error. In the
    database, the character is stored as 0.
What’s wrong with ESB?
• Lack of sound community
 •   “Community driven” vs. “consultants driven”

• Extremely proprietary solutions
• Proprietary extensions to standards


     No standard or clause in a standard has a divine right of existence
     -- A Microsoft PKI architect explaining Microsoft's position on standards compliance.
What’s wrong with ESB?
• Focused on Vendor Background
  •    Application Servers Vendors base their ESB on their
       Application Servers

  •    EAI Vendors base ESB on their EAI

  •    Messaging Vendors base ESB on Message Brokers

• Some solutions became ESB for one
   night...
The trouble is that things never get better, they just stay the same, only more so.
                                -- Terry Pratchett, "Eric"
What’s wrong with ESB?
Steve Vinoski, chief engineer of product
innovation for IONA
 Frankly, if I were an enterprise architect today, and I
 were genuinely concerned about development costs,
     agility, and extensibility, I’d be looking to solve
  everything I possibly could with dynamic languages
 and REST, and specifically the HTTP variety of REST.
 I’d avoid ESBs and the typical enterprise middleware
     frameworks unless I had a problem that really
    required them (see below). I’d also try to totally
                  avoid SOAP and WS-*.
The ESB check list
• Contract first development
 • What does this mean

 • Why it’s important?


• Agility
 • Test Driven Development

 • Contiguous Integration

 • “Mockability”
The ESB check list
•   Standard compliance
    • WS-* standards compliance (beware of Vendor’s bias!)

    • Interoperability

    • WS Stack standard compliance


•   Flexibility
    • REST

    • SOAP


•   Sound Community
CXF the ESB framework
 My opinions may have changed, but not the fact that I am right.
                         -- Ashleigh Brilliant
What's CXF
• IONA Celtix + Codehouse XFire = CXF
   Celtix is an Open Source, Java Enterprise Service Bus
            and hosted in the ObjectWeb community.
                     -- http://www.iona.com, in 2006



    While Celtix has traditionally called itself an ESB, if you
      look at the code you'll see that Celtix has primarily
     focused on providing JAX-WS and WS-* support. The
         new project will NOT be branded as an ESB.
           -- http://xfire.codehaus.org/XFire+and+Celtix+Merge
What’s CXF?
• JAX-WS certified stack
• Commercially Supported   IONA
• Embeddable stack
  • J2EE containers (BEA WLS, JBoss,
  IBM WebSphere, Tomcat, Oracle
  iAS, Apache Geronimo etc. )
  • JBI (Apache Service Mix)
  • Standalone Spring Container
What’s CXF?
●
        WS-* compliant stack
    ●
         WS-Addressing,
    ●
         WS-Policy,
    ●
         WS-ReliableMessaging
    ●
         WS-Security

●
        Fully integrated with Spring
●
        REST enabled framework through
        JAX-RS and HTTP binding
CXF architecture
Transports       Front-ends                                Bindings
         JMS
                         JAX-WS                   Simple              JAXB

         HTTP

                                                                      Aegis
         Local                          Bus




                              Messaging / Interceptors
JAX-WS Architecture
                          •JAX-WS – Java API for XML WS
JAXB 2             SAAJ   • JSR 224 (java.xml.soap)
                          • Web Services metadata JSR 170
                          (java.jws)
                          ••JAXB Java XML Binding API
         JAX-WS           •• JSR 222 (java.xml.bind)
                          ••••Tooling
                             •
                          •WSDL to Java
                          •


                          •Java to WSDL
         Tooling
                          •etc...
                          •
                          •SAAJ
                          •
                          •
                          •SOAP with Attachments API for
                          •


                          Java
                          •
                          •
                          •
CXF Architecture
How does CXF fit into ESB landscape?



         WS Stack                  Adapters/Connectors

                CXF
           Routing and mediation




           Messaging Backbone
Exposing Services
     Seeing is believing
      -- American Proverb
Hello World, CXF Way...
Hello World, CXF Way...
Hello World, CXF Way
• Look Ma! no XML, no generated
  artefacts!
• POJO service
• Dead simple! Even Your Grandma’
  can do it!
• Up and running - in just 19 lines of
  code!
What’s Wrong with this Example?

  • It’s not contract first
  • It’s just remoting
  • It runs in built-in HTTP container
Real-world CXF Webservices
ShipIt Inc. - Shipping service The contract
Real-world CXF Webservices
ShipIt Inc. - Shipping service The contract
Real-world CXF Webservices
Generating the service model
Real-world CXF Webservices
Generated POJO model
Real-world CXF Webservices
Generated POJO model
Real-world CXF Webservices
Service Endpoint Interface
Real-world CXF Webservices
Implementing the Endpoint
Real-world CXF Webservices
Wiring it all together, and deploying
Real-world CXF Webservices
 •       What's wrong with this service?
     •   No value constructors
     • No toString, hashCode and equals
     ●
         XMLGregorianCalendar?
     ●
         No validation
     ●
         No Security
Real-world CXF Webservices
 •   Customizing JAXB binding via xjc plugins
     • Jakarta Commons Plugin
     • Value Constructor Plugin
     ●
         Simple Preserve Plugin
     ●
         Value Constructor Plugin
     ●
         More on:
         ●
             https://jaxb2-commons.dev.java.net/
Real-world CXF Webservices
  • Getting rid of XMLGregorianCalendar
Real-world CXF Webservices
Adding validation and security
Real-world CXF Webservices
Putting it all together
Real-world CXF Webservices
Putting it all together
Real-world CXF Webservices
Monitoring and managing CXF
●
    Built-in JMX monitoring and managing
    module
●
    Exposing custom components
Real-world CXF Webservices
●
    Monitoring and managing CXF
Consuming Services
There are only two tragedies in life: one is not getting what one
               wants, and the other is getting it.
                          -- Oscar Wilde
Consuming Services
• Generate Stubs from WSDL, as before
• Use generated Client Stub



• Disadvantages
  •   No CXF fine-tuning

  •   Bloated client

  •   No Spring integration
Consuming Webservices
Consuming through CXF client API




The same in Spring
Testing Services
There are only two tragedies in life: one is not getting what one
               wants, and the other is getting it.
                          -- Oscar Wilde
Testing services
• Service implementation is just POJO
• Service can be exposed using
  Endpoint.publish and consumed as a
  standard endpoint
  •   Leads to problems with CI servers

• Services can be exposed through CXF
  convenient API, and through local:// (in
  VM) transport
Real-world CXF Webservices
Unit testing CXF services
Do we need ESB?
•   In complex scenarios... yes!
•   But maybe You have one already?
•   Check something that works for You
•   Use ESB Check List when selecting concrete
    solution
• Try to avoid Vendor Lock-in
• Community is important!
Questions?
Dziękuję!

Contenu connexe

Tendances

Modular EJBs in OSGi - Tim Ward
Modular EJBs in OSGi - Tim WardModular EJBs in OSGi - Tim Ward
Modular EJBs in OSGi - Tim Wardmfrancis
 
HowTo Build an OSGI EJB3 Server
HowTo Build an OSGI EJB3 ServerHowTo Build an OSGI EJB3 Server
HowTo Build an OSGI EJB3 Serverekkehard gentz
 
Server Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio SoldanoServer Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio SoldanoJUG Genova
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenJUG Genova
 
Making Portals Cool: The Compelling Advantages of a Portlet Bridge
Making Portals Cool: The Compelling Advantages of a Portlet BridgeMaking Portals Cool: The Compelling Advantages of a Portlet Bridge
Making Portals Cool: The Compelling Advantages of a Portlet BridgeWesley Hales
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Arun Gupta
 
Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbWen Zhu
 
JBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixJBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixrunsignup
 
Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiCédric Hüsler
 
GateIn - Presented at Atlanta JUG on 1/19/2010
GateIn - Presented at Atlanta JUG on 1/19/2010GateIn - Presented at Atlanta JUG on 1/19/2010
GateIn - Presented at Atlanta JUG on 1/19/2010Wesley Hales
 
Mysql overview_20100811
Mysql overview_20100811Mysql overview_20100811
Mysql overview_20100811thinkinlamp
 
Reusing Existing Java EE Applications from SOA Suite 11g
Reusing Existing Java EE Applications from SOA Suite 11gReusing Existing Java EE Applications from SOA Suite 11g
Reusing Existing Java EE Applications from SOA Suite 11gGuido Schmutz
 
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Arun Gupta
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudArun Gupta
 
20100907 fuse-community-evening-adrian-trenaman-no-logo
20100907 fuse-community-evening-adrian-trenaman-no-logo20100907 fuse-community-evening-adrian-trenaman-no-logo
20100907 fuse-community-evening-adrian-trenaman-no-logoAdrian Trenaman
 

Tendances (20)

Modular EJBs in OSGi - Tim Ward
Modular EJBs in OSGi - Tim WardModular EJBs in OSGi - Tim Ward
Modular EJBs in OSGi - Tim Ward
 
HowTo Build an OSGI EJB3 Server
HowTo Build an OSGI EJB3 ServerHowTo Build an OSGI EJB3 Server
HowTo Build an OSGI EJB3 Server
 
Server Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio SoldanoServer Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio Soldano
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef Arendsen
 
Making Portals Cool: The Compelling Advantages of a Portlet Bridge
Making Portals Cool: The Compelling Advantages of a Portlet BridgeMaking Portals Cool: The Compelling Advantages of a Portlet Bridge
Making Portals Cool: The Compelling Advantages of a Portlet Bridge
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
 
Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an Esb
 
JBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixJBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrix
 
Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGi
 
oracle-osb
oracle-osboracle-osb
oracle-osb
 
GateIn - Presented at Atlanta JUG on 1/19/2010
GateIn - Presented at Atlanta JUG on 1/19/2010GateIn - Presented at Atlanta JUG on 1/19/2010
GateIn - Presented at Atlanta JUG on 1/19/2010
 
Mysql overview_20100811
Mysql overview_20100811Mysql overview_20100811
Mysql overview_20100811
 
Reusing Existing Java EE Applications from SOA Suite 11g
Reusing Existing Java EE Applications from SOA Suite 11gReusing Existing Java EE Applications from SOA Suite 11g
Reusing Existing Java EE Applications from SOA Suite 11g
 
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
Where to use OSB
Where to use OSBWhere to use OSB
Where to use OSB
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
20100907 fuse-community-evening-adrian-trenaman-no-logo
20100907 fuse-community-evening-adrian-trenaman-no-logo20100907 fuse-community-evening-adrian-trenaman-no-logo
20100907 fuse-community-evening-adrian-trenaman-no-logo
 

Similaire à Do We Need Esb Any More

Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
ESB and SOA
ESB and SOAESB and SOA
ESB and SOAWSO2
 
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusService Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusIMC Institute
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...WSO2
 
Practical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobusPractical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobusJarrod Overson
 
ESB and Mule ESB solution
ESB and Mule ESB solutionESB and Mule ESB solution
ESB and Mule ESB solutionSwati Bansal
 
Ibm 1 Wps Arch
Ibm 1 Wps ArchIbm 1 Wps Arch
Ibm 1 Wps Archluohd
 
WSO2 ESB and SOA
WSO2 ESB and SOAWSO2 ESB and SOA
WSO2 ESB and SOAWSO2
 
Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB WSO2
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slidesWSO2
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOpsAlbert Wong
 
A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)WSO2
 
Esb buyers guide_final
Esb buyers guide_finalEsb buyers guide_final
Esb buyers guide_finalWSO2
 

Similaire à Do We Need Esb Any More (20)

Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
ESB and SOA
ESB and SOAESB and SOA
ESB and SOA
 
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service BusService Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
Service Oriented Architecture (SOA) [2/5] : Enterprise Service Bus
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
 
Practical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobusPractical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobus
 
ESB and Mule ESB solution
ESB and Mule ESB solutionESB and Mule ESB solution
ESB and Mule ESB solution
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Sca
ScaSca
Sca
 
Enterprise Service Bus and JBI
Enterprise Service Bus and JBIEnterprise Service Bus and JBI
Enterprise Service Bus and JBI
 
Ibm 1 Wps Arch
Ibm 1 Wps ArchIbm 1 Wps Arch
Ibm 1 Wps Arch
 
WSO2 ESB and SOA
WSO2 ESB and SOAWSO2 ESB and SOA
WSO2 ESB and SOA
 
Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slides
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 
Enterprise service bus part 2
Enterprise service bus part 2Enterprise service bus part 2
Enterprise service bus part 2
 
A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)
 
Esb buyers guide_final
Esb buyers guide_finalEsb buyers guide_final
Esb buyers guide_final
 
Wso2 tutorial
Wso2 tutorialWso2 tutorial
Wso2 tutorial
 
Riding with camel
Riding with camelRiding with camel
Riding with camel
 

Do We Need Esb Any More

  • 1. Do we need ESB any more? Artur Karaźniewicz
  • 2. About me • Artur Karaźniewicz - Chief Integration And Solution Architect, Integration Team Leader - Allianz Poland • Working with Java since 1999 (JServ anybody?) • Experience in Financial Services
  • 3. What’s an ESB? First things first, but not necessarily in that order. -- Doctor Who
  • 4. What’s an ESB Enterprise Service Bus - term first coined by Gartner around 2002 (although few others claim They coined the term before) (Enterprise Service Bus) Universal integration backbone. An ESB acts as a shared messaging layer for connecting applications and other services throughout an enterprise computing infrastructure. It supplements its core 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 the Java Message System (JMS).
  • 5. What’s an ESB Sonic Software, one of the first ESB bandwagon members has it's own definition An ESB is software infrastructure that simplifies the integration and flexible reuse of business components using a service-oriented architecture. An ESB makes it easy to dynamically connect, mediate and control services and their interactions. -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
  • 6. What’s an ESB IONA has little bit different perception what ESB actually is In general we agree with Sonic's requirements for an ESB, at a technical level when it comes to how to meet those requirements we think they have got it all wrong. [...] Specifically, he said that Iona believes Sonic's ESB is "overly JMS [Java Message Service] and broker based". -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
  • 7. What’s an ESB PolarLake, another ESB Vendor adds another view Great to see Sonic Software's definition converge towards ours. In particular, they are correctly identifying that mediation - a term we have used for quite some time - is the core feature of an ESB. -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html
  • 8. So what’s ESB after all? Odd that we think definitions are definitive. -- Larry Wall, Perl Creator
  • 9. So What’s an ESB, after all? WS Stack Adapters/Connectors Routing and mediation Messaging Backbone Legacy Systems
  • 10. So What’s an ESB, after all? • A little bit of distribution mechanisms • Bus Architecture vs. Hub And Spoke • Strong monitoring and management capabilities • With little pinch of flexibility...
  • 11. What ESB is not? • It’s not an Application Server! • It’s not centralized nor monolithic • It’s not BPMS (Business Process Management Suite) • It’s not MOM
  • 12. What’s wrong with ESB, then? For every complex problem, there is a solution that is simple, neat, and wrong. -- Henry Louis Mencken
  • 14. What’s wrong with ESB? • It looks Great!.. • ...But in practice - most ESBs are typical 80/20 solutions (or simple, neat and wrong) • 80% of (simple) things are very easy to implement using of the shelve ESB • 20% of things are extremely difficult to implement using of the shelve ESB We have 80% of Perl6 done and we are now working on the next 80%. -- Anonymous Coward, slashdot.org, Perl 6 discussion
  • 15. Examples? Excerpt from (some) ESB documentation The Oracle Database adapter does not support the following data types: * PL/SQL TABLE * TABLE * VARRAY * OBJECT etc..
  • 16. Examples? Excerpt from (some) ESB documentation The Oracle Database adapter accepts a character data for a NUMBER field without throwing an error. In the database, the character is stored as 0.
  • 17. What’s wrong with ESB? • Lack of sound community • “Community driven” vs. “consultants driven” • Extremely proprietary solutions • Proprietary extensions to standards No standard or clause in a standard has a divine right of existence -- A Microsoft PKI architect explaining Microsoft's position on standards compliance.
  • 18. What’s wrong with ESB? • Focused on Vendor Background • Application Servers Vendors base their ESB on their Application Servers • EAI Vendors base ESB on their EAI • Messaging Vendors base ESB on Message Brokers • Some solutions became ESB for one night... The trouble is that things never get better, they just stay the same, only more so. -- Terry Pratchett, "Eric"
  • 19. What’s wrong with ESB? Steve Vinoski, chief engineer of product innovation for IONA Frankly, if I were an enterprise architect today, and I were genuinely concerned about development costs, agility, and extensibility, I’d be looking to solve everything I possibly could with dynamic languages and REST, and specifically the HTTP variety of REST. I’d avoid ESBs and the typical enterprise middleware frameworks unless I had a problem that really required them (see below). I’d also try to totally avoid SOAP and WS-*.
  • 20. The ESB check list • Contract first development • What does this mean • Why it’s important? • Agility • Test Driven Development • Contiguous Integration • “Mockability”
  • 21. The ESB check list • Standard compliance • WS-* standards compliance (beware of Vendor’s bias!) • Interoperability • WS Stack standard compliance • Flexibility • REST • SOAP • Sound Community
  • 22. CXF the ESB framework My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant
  • 23. What's CXF • IONA Celtix + Codehouse XFire = CXF Celtix is an Open Source, Java Enterprise Service Bus and hosted in the ObjectWeb community. -- http://www.iona.com, in 2006 While Celtix has traditionally called itself an ESB, if you look at the code you'll see that Celtix has primarily focused on providing JAX-WS and WS-* support. The new project will NOT be branded as an ESB. -- http://xfire.codehaus.org/XFire+and+Celtix+Merge
  • 24. What’s CXF? • JAX-WS certified stack • Commercially Supported IONA • Embeddable stack • J2EE containers (BEA WLS, JBoss, IBM WebSphere, Tomcat, Oracle iAS, Apache Geronimo etc. ) • JBI (Apache Service Mix) • Standalone Spring Container
  • 25. What’s CXF? ● WS-* compliant stack ● WS-Addressing, ● WS-Policy, ● WS-ReliableMessaging ● WS-Security ● Fully integrated with Spring ● REST enabled framework through JAX-RS and HTTP binding
  • 26. CXF architecture Transports Front-ends Bindings JMS JAX-WS Simple JAXB HTTP Aegis Local Bus Messaging / Interceptors
  • 27. JAX-WS Architecture •JAX-WS – Java API for XML WS JAXB 2 SAAJ • JSR 224 (java.xml.soap) • Web Services metadata JSR 170 (java.jws) ••JAXB Java XML Binding API JAX-WS •• JSR 222 (java.xml.bind) ••••Tooling • •WSDL to Java • •Java to WSDL Tooling •etc... • •SAAJ • • •SOAP with Attachments API for • Java • • •
  • 28. CXF Architecture How does CXF fit into ESB landscape? WS Stack Adapters/Connectors CXF Routing and mediation Messaging Backbone
  • 29. Exposing Services Seeing is believing -- American Proverb
  • 32. Hello World, CXF Way • Look Ma! no XML, no generated artefacts! • POJO service • Dead simple! Even Your Grandma’ can do it! • Up and running - in just 19 lines of code!
  • 33. What’s Wrong with this Example? • It’s not contract first • It’s just remoting • It runs in built-in HTTP container
  • 34. Real-world CXF Webservices ShipIt Inc. - Shipping service The contract
  • 35. Real-world CXF Webservices ShipIt Inc. - Shipping service The contract
  • 41. Real-world CXF Webservices Wiring it all together, and deploying
  • 42. Real-world CXF Webservices • What's wrong with this service? • No value constructors • No toString, hashCode and equals ● XMLGregorianCalendar? ● No validation ● No Security
  • 43. Real-world CXF Webservices • Customizing JAXB binding via xjc plugins • Jakarta Commons Plugin • Value Constructor Plugin ● Simple Preserve Plugin ● Value Constructor Plugin ● More on: ● https://jaxb2-commons.dev.java.net/
  • 44. Real-world CXF Webservices • Getting rid of XMLGregorianCalendar
  • 45. Real-world CXF Webservices Adding validation and security
  • 48. Real-world CXF Webservices Monitoring and managing CXF ● Built-in JMX monitoring and managing module ● Exposing custom components
  • 49. Real-world CXF Webservices ● Monitoring and managing CXF
  • 50. Consuming Services There are only two tragedies in life: one is not getting what one wants, and the other is getting it. -- Oscar Wilde
  • 51. Consuming Services • Generate Stubs from WSDL, as before • Use generated Client Stub • Disadvantages • No CXF fine-tuning • Bloated client • No Spring integration
  • 52. Consuming Webservices Consuming through CXF client API The same in Spring
  • 53. Testing Services There are only two tragedies in life: one is not getting what one wants, and the other is getting it. -- Oscar Wilde
  • 54. Testing services • Service implementation is just POJO • Service can be exposed using Endpoint.publish and consumed as a standard endpoint • Leads to problems with CI servers • Services can be exposed through CXF convenient API, and through local:// (in VM) transport
  • 55. Real-world CXF Webservices Unit testing CXF services
  • 56. Do we need ESB? • In complex scenarios... yes! • But maybe You have one already? • Check something that works for You • Use ESB Check List when selecting concrete solution • Try to avoid Vendor Lock-in • Community is important!