JBoss ESB 4.2 Deep Dive Burr Sutter May 16 2007
JBossESB Deep Dive Webinar May 16 • Describe and demonstrate as many of the ESB 4.2 capabilities as possible in one hour. • Please try to hold your questions until the end. The Q&A portion of this presentation will be conducted via the Elluminate chat window AFTER the completion of the formal presentation. • We can repeat this session as needed, as available – our first scheduled repeat is May 22nd 11:00 AM Eastern • ESB 4.2 MR2 is available for download: http://labs.jboss.com/jbossesb/ • Join our email list for future ESB announcements: https://lists.jboss.org/mailman/listinfo/esb-announce • The PDF of the slides will be available to attendees after the session. Questions:
[email protected]
A Real World Scenario
ASCII
ASCII
File System
File System
Source System ASCII
MSG
Data Data
FTP FTP
FTP GET
MQ MQ
Socket Socket
JMS Listener
SQL SQL TCP/IP Socket
JDBC/ODBC Select Update
Questions:
[email protected]
The ESB Solution ASCII ASCII
File System
File System
Source System
Receiving System 1
XML JBoss ESB
JMS
Receiving System 2 ASCII ASCII
JMS
XML
File System FTP SOAP
Receiving System N Questions:
[email protected]
Receiving System 3
Enterprise Service Bus Event Listeners and Actions provide transport and
Pluggable Architecture
for integrating infrastructure services
transport mediation
Transports
runs within a container or standalone
HTTP(S) Infrastructure Services
FTP Transformation
Routing
Security
Business Service Components Management
File ASCII XML Binary
Business Services
Java EE 5 Web Services
JMS
JBoss ESB
EJB3
Email
POJOs
SQL Notification
Hibernate
JCA
Service Registry
Event Store
Socket
Orchestration & Composition Engine BPEL jPDL
SOAP
Service Component Architecture Service Data Object
Business Data
Excel Browser
Web Seam Portal
* Transformation includes: Message Normalization, Validation, Enrichment, Rules-based and XSLT transforms
RDBMS Legacy COTS Process Store
Questions:
[email protected]
ESBs Across The Enterprise Business Service
HTTP/S Transformation
Routing
Security
Management
FTP JSR 181 POJOs
File
JBoss ESB EJB3
JMS
Invoicing/Order Entry
JCA
POJO Email Service Registry
SOAP
Event Store
Composition Engine
Notification
Web Seam
BPEL jPDL Scripting
Process Store
Business Data
Portal
Web Order Entry
Accounting
File Routing
ESB Composition Engine Process Store
BPEL
Security
FTP
SOAP
Service Registry
Shared Distributed Registry
File
JBoss ESB
Email SOAP
Plus Lightweight ESB Architecture
Questions:
[email protected]
Service Registry
Event Store
Composition Engine BPEL
Notification
Process Store
Service Federation Warehouse Services Shipping Calc Shipping Calc Shipping Calc Inventory Check Inventory Check Inventory Check Inventory Update Inventory Update Inventory Update
Order Services Order Validation Order Validation Credit Check Credit Check
Process Store
Routing Services
Registry & Messaging
Customer Services Rules Services Cluster Customer Inquiry Customer Inquiry Customer Update Customer Update Accounting Accounting
Transformation Services Cluster
* JVM Questions:
[email protected]
Enterprise Service Bus Q6 2006
Event Listeners and Actions provide transport and
Mid 2007
Partners
Future
Pluggable Architecture
for integrating infrastructure services
transport mediation
Transports
runs within a container or standalone
HTTP(S) Infrastructure Services
FTP Transformation
Routing
Security
Business Service Components Management
File ASCII XML Binary
Business Services
Java EE 5 Web Services
JMS
JBoss ESB
EJB3
Email
POJOs
SQL Notification
Hibernate
JCA
Service Registry
Event Store
Socket
Orchestration & Composition Engine BPEL jPDL
SOAP
Service Component Architecture Service Data Object
Business Data
Excel Browser
Web Seam Portal
* Transformation includes: Message Normalization, Validation, Enrichment, Rules-based and XSLT transforms
RDBMS Legacy COTS Process Store
Questions:
[email protected]
The Modern Silo Browser
Web
App
DB
Pages: Struts, JSF, Tapestry
DAO/JPA/SLSB/Spring Bean Hibernate
Query/Stored Procedure
Questions:
[email protected]
Intermediate those Silos Browser
Mediation
Rich
Service 1
Service 2
Service 4
DB
Legacy
Service 3
DAO/JPA/SLSB/Spring Bean Hibernate
App
Mediation
B2B
Service 5
Service 6
Query/Stored Procedure
Questions:
[email protected]
Demo 1
JBossESB 4.2 provides •
Message delivery – –
•
Action chaining/pipeline –
•
BPM, Intelligent routing, EIPs and hot deployment
Registry – –
• • • •
JBoss Rules, XPath DSL Recipient List/Static Routing is also supported
Orchestration –
•
XSLT, Java, Groovy, StringTemplate
Content-based routing – –
•
For custom service enablement & mediation
Transformation –
•
JMS (JBossMQ, JBoss Messaging, ActiveMQ, MQSeries, Oracle AQ) (S)FTP, SOAP, HTTP, email, database, shared file system
JAX-R based UDDI support out-of-the-box (Scout and jUDDI)
Message Store Gateways Extensive examples and documentation And more…
Questions:
[email protected]
JBoss ESB 4.2 Roadmap • JMX Microkernel • Federated Clustering • WS-* – – – – –
SOAP 1.2 WSDL 1.1 181 Annotated POJO Endpoints EJB 2.1 and EJB 3.0 Endpoints JAXB 2.0
• BPEL 2.0
• • • • • • • • • • •
Advanced Splitter/Aggregator Content Based Filter Business Rules Action Native Process Orchestration Improved SQL Gateway Hibernate Gateway/Listener HTTP Gateway/Listener Groovy Action Message Store Actions JCA Container Additional EIP examples
Questions:
[email protected]
ESB Transformation Engine • • • • • •
Validation Enrichment Inline transformations (Fragment based Processing) Profile based XML/non-XML processing Anything to Anything (XML, CSV, binary, X12, POJO) Mix/Match transformers on a single message: – Java – Groovy – StringTemplate – XSLT • 4X performance boost over plain XSLT (Xalan): http://milyn.codehaus.org/Chiba+Integration
Questions:
[email protected]
jboss-esb.xml • Configuration for one or more services which show up in the registry. • Deployed as the key element of a .esb archive in 4.2+ • Structure of a .esb archive
META-INF jboss-esb.xml com.mycompany.soa.mycustom.actions MyCustomAction.class Tip: Use one of the quickstarts as your template for your new project. We do assume that you are comfortable with Ant. An Eclipse Project template is under Development and will be available in SVN soon (as of May 16, 2007)
Questions:
[email protected]
Hello World – jboss-esb.xml 1 <jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schema s/xml/jbossesb-1.0.1.xsd" parameterReloadSecs="5"> <providers> <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"> <jms-bus busid="quickstartGwChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/quickstart_helloworld_Request_GW"/> <jms-bus busid="quickstartEsbChannel"> <jms-message-filter dest-type="QUEUE" dest-name=" queue/quickstart_helloworld_Request_ESB"/>
Questions:
[email protected]
Hello World – jboss-esb.xml 2 <services> <service category="FirstServiceESB" name="SimpleListener" description="Hello World"> <listeners> <jms-listener name="JMS-Gateway" busidref="quickstartGwChannel" maxThreads="1" is-gateway="true"/> <jms-listener name="helloWorld" busidref="quickstartEsbChannel" maxThreads="1"/>
Questions:
[email protected]
Hello World - action package org.jboss.soa.esb.samples.quickstart.helloworld; import org.jboss.soa.esb.message.Message; public class MyListenerAction { public Message displayMessage(Message message) { System.out.println("Body: " + new String(message.getBody().getContents())); // modify the contents, do anything Java can do… return message; // always return the message for the “chain” } public MyListenerAction(ConfigTree config) { // this constructor will be used to handle any jboss-esb.xml } // custom property configuration }
Questions:
[email protected]
Action Pipeline (in a Service) Actions are reusable mediation components that can be chained together to form the capabilities of a registered service. Actions can be dynamically added/removed at runtime. My_Registered_Service
FTP
Action
Action
Transformation CSV to XML
Action
Routing Splitter or BPM
Action
Logging Audit Trail
Action
Business Logic Invocation
Transformation XML to POJO This box can also represent the ESB’s JVM – actions are “in VM”
Questions:
[email protected]
Business Logic Component
Business Logic: • POJO • EJB • WS • Rules • JCA with Adapters • Anything with Java API
Demo 2
Enterprise Integration Patterns File Transfer
Recipient List
Channel Router/CBR Message Splitter Message Filter Aggregator Message Store Translator/Transformer Enricher Wire Tap Process Manager
Content Filter
More information at www.enterpriseintegrationpatterns.com Questions:
[email protected]
Routing, Services & Actions A_Service
Action
SOAP
EJB
DB
B_Service
ASCII XML Binary
FTP
Action
Action
C_Service
JMS
POJO
DB
D_Service
Action
JMS
Action
Questions:
[email protected]
WS
DB
Content Based Routing Orders over 12K or from Platinum customers
Platinum_Service Action
SOAP
Ordering_Service Action
FTP
POJO
DB
ASCII XML Binary
Special_Handling Action
SOAP
EJB
DB Randomly grab orders for review – tracer and Keep a total of all orders flowing through the system Orders from customers in certain states/countries
Questions:
[email protected]
Content Based Routing Engine • • •
Currently based on JBoss Rules – supports XPATH DSL Access to the complete Header and Body/Contents for evaluation Zero to many destinations rule "Routing Rule using XPATH Greater" when xpathGreaterThan "/Order/@totalAmount", "50.0" then Log : "Really It's EXPRESS Shipping"; Destination : "ExpressShipping:ExpressShippingService"; end rule "Routing Rule using XPATH Less" when xpathLessThan "/Order/@totalAmount", "50.0" then Log : "Really It's NORMAL Shipping"; Destination : "NormalShipping:NormalShippingService"; end
Destination : “ServiceCategory:ServiceName” Questions:
[email protected]
Splitter/Aggregator Quickstart Also demonstrates, federated ESB, multi-JVM capabilities
Inbound Splitter JMS
Action
Red Action
JMS
Aggregator_Service
Green Action
JMS
JMS
Blue JMS
Action
Questions:
[email protected]
Action
Demo 3
Orchestration (Got Flow) Simple Order Handling Process Customer
Submit Order
Customer Service
Receive Order
Credit Agency Warehouse
Issues
Validate Order
CSR Teams
Credit Check
Inventory Check
Shipper
Send Shipment
Handle Shipment
Customers submit orders via web browser, FTP and Web Services. The system receives and validates the order, errors are sent to the appropriate CSR Team A credit check request is made, any areas of concern are sent to the appropriate CSR Team An inventory check request across multiple warehouses is sent, lack of availability goes to the CSRs. Assuming the order is valid, checks credit and available inventory, pick tickets are printed, shipping labels are printed, someone throws the parts into a crate or places on a pallet and puts the package by the loading dock. Various shipping companies are employed. Questions:
[email protected]
Service Oriented Orchestration Customer
Submit Order
Customer Service
Receive Order
Issues
Validate Order
Credit Agency
CSR Teams Credit Check Inventory Check
Warehouse Shipper
Send Shipment Handle Shipment
Validate Order
Credit Check
a Parse XML b Transform c Apply Business Rules
a Create Outbound Msg b Handle Response c Apply Business Rules Inventory Check
ESB Mediates & Provides Services
a Send to N Warehouses b Handle N Responses c Determine Best WHSEs d Handle Drop-Ships Questions:
[email protected]
Send Shipment a Determine Shipper(s) b Print Labels c Print Pick Tickets d Create & Send ASNs
Service Orchestration & BPM Humans
Customer
CSR
Sales Mgmt
WHSE Mgmt
Submit Order
FTP
Receive Order
Issues Validate Order
CSR Teams Credit Check
SOAP
Inventory Check
Send Shipment Handle Shipment
File Validate Order
Credit Check
Inventory Check
Send Shipment
…
Various Transports
External
J2EE App Server
Credit/Bank
Legacy
Partners
An ESB Service is visible in the UDDI registry automatically. A single ESB Service may or may not expose a WSDL. It may use out-of-the-box actions, custom actions and/or consume external services from various sources. Focus on the reuse of existing infrastructure and assets. Questions:
[email protected]
Orchestrated/Composed Services JVM BPM External Actor
Validation_Service DAO
DB
Action
POJO
DB
Action
EJB
DB
Action External Actor
External Actor
Pricing_Service
Order_Service Action
Questions:
[email protected]
Orchestration Designer
Questions:
[email protected]
Demo 4
BPEL • We are partnering with Active Endpoints • www.activebpel.org • Download their open source BPEL engine and contact them for their free design tool. • As for ESB 4.2 MR2, review the webservice_bpel quickstart, specifically the ActiveBPELOrchestration.pdf under that quickstart’s Docs folder. • And engage us in the online forums: http://www.jboss.com/index.html?module=bb&op=viewforum&f=246
Questions:
[email protected]
Possible Big Picture SOAP
.NET Application JVM Enterprise Service Bus
BPEL Partner Link
WS Client
SOAP
Partner Link
Service A JMS
SOAP
Partner Link FTP
S E R V I C E
O R C H E S T R A T I O N
Action
Service B
SOAP
Rules
Action
Spring Service C Action
EJB
DB
Service D
Application Server Note: Not every technology is required. This is simply a way to illustrate how the various technologies might be used together
Groovy
Legacy Application
Questions:
[email protected]
Action
DAO
Conclusions • • • • •
Open Source will make SOA happen It is NOT all about Web Services ESB a solution for application/process integration. ESB is about service intermediation. JBossESB architecture is key to flexibility and future-proofing – Forms the backbone of our SOA strategy
• DOWNLOAD ESB 4.2 MR2
Questions:
[email protected]