Professional Documents
Culture Documents
2 Deep Dive
Burr Sutter
May 16 2007
JBossESB Deep Dive Webinar May 16
Questions: burr.sutter@jboss.com
A Real World Scenario
ASCII
ASCII
File System
File System
Source
System
ASCII FTP
FTP
MSG MQ
FTP
MQ
GET
Data
Data Socket
Socket
JMS
Listener
SQL
SQL
TCP/IP
Socket
JDBC/ODBC
Select
Update
Questions: burr.sutter@jboss.com
The ESB Solution
ASCII
ASCII
File System
Receiving
File System System 1
Source XML
System JBoss ESB
JMS
Receiving
System 2
ASCII
ASCII
JMS XML
File System
FTP
Receiving
SOAP
System 3
Receiving
System N
Questions: burr.sutter@jboss.com
Enterprise Service Bus
Event Listeners and Actions Pluggable Architecture Business Services
provide transport and for integrating infrastructure services runs within a container or
transport mediation standalone
Transports HTTP(S)
Infrastructure
Business Service
Services
FTP Components
Email
POJOs
SQL
Notification Orchestration Service Component Architecture
Service Event &
Hibernate Registry Store Composition Service Data Object
Engine
Socket BPEL
jPDL Business
Data
SOAP
Excel
* Transformation includes: RDBMS
Browser Web Message Normalization, Legacy
Validation, Enrichment, COTS
Seam Rules-based Process
Portal and XSLT transforms Store
Questions: burr.sutter@jboss.com
ESBs Across The Enterprise
HTTP/S Business
Transformation Routing Security Management Service
FTP
BPEL
Notification Business
Web jPDL
Data
Scripting Process
Seam Store
Portal
Shared
ESB
File
JBoss ESB
Composition
Engine
Distributed Email
Service
Process
Store BPEL
Registry Registry SOAP
Event Composition
Service
Registry Store Engine
Process
BPEL
Plus Lightweight ESB Notification
Store
Architecture
Questions: burr.sutter@jboss.com
Service Federation
Warehouse Services
Shipping Calc
Shipping Calc
Shipping Calc
Order Services Inventory Check
Inventory Check
Inventory Check
Inventory Update
Order Validation Inventory Update Process Store
Order Validation Inventory Update
Credit Check
Credit Check
Routing Services
Registry
& Messaging
Customer Services
Rules Services Cluster
Customer Inquiry
Customer Inquiry
Customer Update
Customer Update
Accounting
Accounting
Transports HTTP(S)
Infrastructure
Business Service
Services
FTP Components
Email
POJOs
SQL
Notification Orchestration Service Component Architecture
Service Event &
Hibernate Registry Store Composition Service Data Object
Engine
Socket BPEL
jPDL Business
Data
SOAP
Excel
* Transformation includes: RDBMS
Browser Web Message Normalization, Legacy
Validation, Enrichment, COTS
Seam Rules-based Process
Portal and XSLT transforms Store
Questions: burr.sutter@jboss.com
The Modern Silo
Browser
DAO/JPA/SLSB/Spring Bean
App Hibernate
DB Query/Stored Procedure
Questions: burr.sutter@jboss.com
Intermediate those Silos
Browser Rich B2B Legacy
DAO/JPA/SLSB/Spring Bean
App Hibernate
DB Query/Stored Procedure
Questions: burr.sutter@jboss.com
Demo 1
JBossESB 4.2 provides
• Message delivery
– JMS (JBossMQ, JBoss Messaging, ActiveMQ, MQSeries, Oracle AQ)
– (S)FTP, SOAP, HTTP, email, database, shared file system
• Action chaining/pipeline
– For custom service enablement & mediation
• Transformation
– XSLT, Java, Groovy, StringTemplate
• Content-based routing
– JBoss Rules, XPath DSL
– Recipient List/Static Routing is also supported
• Orchestration
– BPM, Intelligent routing, EIPs and hot deployment
• Registry
– JAX-R based
– UDDI support out-of-the-box (Scout and jUDDI)
• Message Store
• Gateways
• Extensive examples and documentation
• And more…
Questions: burr.sutter@jboss.com
JBoss ESB 4.2 Roadmap
• JMX Microkernel • Advanced Splitter/Aggregator
• Federated Clustering • Content Based Filter
• WS-* • Business Rules Action
– SOAP 1.2 • Native Process Orchestration
– WSDL 1.1
• Improved SQL Gateway
– 181 Annotated POJO Endpoints
– EJB 2.1 and EJB 3.0 Endpoints • Hibernate Gateway/Listener
– JAXB 2.0 • HTTP Gateway/Listener
• BPEL 2.0 • Groovy Action
• Message Store Actions
• JCA Container
• Additional EIP examples
Questions: burr.sutter@jboss.com
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: burr.sutter@jboss.com
jboss-esb.xml
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: burr.sutter@jboss.com
Hello World – jboss-esb.xml 1
<?xml version = "1.0" encoding = "UTF-8"?>
<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>
<jms-bus busid="quickstartEsbChannel">
<jms-message-filter
dest-type="QUEUE"
dest-name=" queue/quickstart_helloworld_Request_ESB"/>
</jms-bus>
</jms-provider>
</providers>
Questions: burr.sutter@jboss.com
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"/>
</listeners>
<actions>
<action name="action1"
class="quickstart.helloworld.MyListenerAction"
process="displayMessage"/>
</actions>
</service>
</services>
</jbossesb>
Questions: burr.sutter@jboss.com
Hello World - action
package org.jboss.soa.esb.samples.quickstart.helloworld;
import org.jboss.soa.esb.message.Message;
Questions: burr.sutter@jboss.com
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
Business
FTP Action Action Action Action Action Logic
Component
Business Logic:
• POJO
Transformation Routing Logging Business
CSV to XML Splitter Audit Logic • EJB
or Trail Invocation • WS
BPM • Rules
Transformation • JCA with Adapters
XML to POJO • Anything with Java API
This box can also represent the ESB’s JVM – actions are “in VM”
Questions: burr.sutter@jboss.com
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: burr.sutter@jboss.com
Routing, Services & Actions
A_Service
B_Service
C_Service D_Service
Questions: burr.sutter@jboss.com
Content Based Routing
Orders over 12K or from Platinum customers
Platinum_Service
SOAP Action
Ordering_Service
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: burr.sutter@jboss.com
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
Destination : “ServiceCategory:ServiceName”
Questions: burr.sutter@jboss.com
Splitter/Aggregator Quickstart
Also demonstrates, federated ESB, multi-JVM capabilities
Inbound Splitter
JMS Action
Red
JMS Action
Green Aggregator_Service
Blue
JMS Action
Questions: burr.sutter@jboss.com
Demo 3
Orchestration (Got Flow)
Simple Order Handling Process
Customer
Receive Order Validate Order CSR Teams
Service
Credit
Credit Check
Agency
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: burr.sutter@jboss.com
Service Oriented Orchestration
Customer Submit Order Issues
Customer
Receive Order Validate Order CSR Teams
Service
Credit
Credit Check
Agency
Questions: burr.sutter@jboss.com
Service Orchestration & BPM
Various Transports
J2EE App
External Credit/Bank Legacy Partners
Server
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: burr.sutter@jboss.com
Orchestrated/Composed Services
JVM
BPM
External
Actor Validation_Service
Action DAO DB
External
Actor Pricing_Service
Action POJO DB
External
Actor Order_Service
Questions: burr.sutter@jboss.com
Orchestration Designer
Questions: burr.sutter@jboss.com
Demo 4
BPEL
Questions: burr.sutter@jboss.com
Possible Big Picture
.NET
SOAP
Application
JVM
Enterprise Service Bus
Application Server
Note: Not every technology is required.
This is simply a way to illustrate how
Legacy
the various technologies might be used SOAP
together Application
Questions: burr.sutter@jboss.com
Conclusions
Questions: burr.sutter@jboss.com