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