Transcript Document

JBoss SOA Platform
4.2 – Deep Dive
Burr Sutter
February 2008
App Server vs ESB for SOA
Servlet Servlet
JMS
JSP
JMS
JSP
RMIEJB
EJB
WS
SOAP/WSDL
SOAP/WSDL
WS
RMI
JCA
BPM
JCA
Rules
Hibernate
Hibernate
JPA
JPA
Application Server
Business Service Enablement Platform
Questions: [email protected]
App Server vs ESB for SOA
Load Balancer
Service Clustering
Stateful Fault Tolerance/Smart Load Balancing
Questions: [email protected]
App Server vs ESB for SOA
Accounting
Registry
& Messaging
Billing
Routing/Orchestration
CRM
Inventory
Questions: [email protected]
App Server vs ESB for SOA
Transformation
Java
LAMP
REST
JMS
SOAP
Registry
& Messaging
FTP
File
TCP
Routing/Orchestration
.NET
Legacy
Questions: [email protected]
F
I
R
E
W
A
L
L
Partners
App Server vs ESB for SOA
ESB
Transformation
Java
LAMP
REST
JMS
SOAP
Registry
& Messaging
FTP
File
TCP
F
I
R
E
W
A
L
L
Partners
Routing/Orchestration
.NET
Note: an ESB still runs in a JVM
Legacy
often that is an App Server
Questions: [email protected]
An Integration Challenge
Browser
B2C
eCommerce
Browser
B2E
Admin
Internet
Master Data
B2B
Partner
FTP
Internet
(consumer)
MQ
ASCII
VPN
Scheduled Service
Web
Service
Web
Service
POS
ASCII
DB
Accounting
Package
(consumer)
(consumer)
Reporting Engine
Questions: [email protected]
CC Auth
HQ
(consumer &
producer)
SOA Platform 4.2
Event Listeners and
Gateways provide transport
Pluggable Architecture
for integrating infrastructure services
mediation
Transports
run within a container or
standalone
HTTP(S)
Business Service
Components
(S)FTP
Infrastructure
Services
Java EE 5
File
ASCII
XML
Binary
Business Services
Transformation
Routing
Security
Management
Web Services
JCA
JMS
EJB
Seam
Email
ESB
POJOs
SQL
Drools
Hibernate
JCA/Inflow
Socket
Service
Registry
UDDI
Message
Store
Declarative
Orchestration
Engine
Event
Notification
Custom
Action
BPEL
jPDL
Spring
Groovy
Service Component Architecture
Service Data Object
SOAP
Excel
Browser
Process
Store
Business
Data
Web
Native
Java
Declarative Transformation includes:
Message Normalization,
Validation, Enrichment,
Via XSLT, Groovy, Java, StringTemplate, FreeMarker
Questions: [email protected]
RDBMS
Legacy
COTS
SOA Platform 4.2
Now
Event Listeners and Actions
provide transport mediation
Transports
Future
Partners
Pluggable Architecture
for integrating infrastructure services
runs within a container or
standalone
HTTP(SS)
S
Business Service
Components
FTP
Infrastructure
Services
Java EE 5
File
ASCII
XML
Binary
Business Services
Transformation
Routing
Security
Management
Web Services
JCA
JMS
EJB
Seam
Email
ESB
POJOs
SQL
Drools
Hibernate
JCA/Inflow
Socket
Service
Registry
UDDIv3
UDDI
Message
Store
Declarative
Orchestration
Engine
Event
Notification
Custom
Action
BPEL
BPEL
jPDL
Spring
Groovy
Service Component Architecture
Service Data Object
SOAP
Excel
Browser
Process
Store
Business
Data
Web
Native
Java
RDBMS
Legacy
COTS
Questions: [email protected]
ESB++ Scenario
HTTP
HTTP
FTP
FTP
File
File
jBPM
JMS
JMS
Email
Email
SOAP
SOAP
SQL
SQL
Rules
Custom
Custom
J2EE/Java EE 5 Services
JMS
EJB
WS
JCA
Hibernate
JPA
Questions: [email protected]
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]
ESB Definition
•
There is NO J2EE-like specification with a TCK that can define
and validate an ESB like there is for App Servers.
• ESBs are categorized by their capabilities – some come from a
heritage of EAI and others of MOM.
• Capabilities:
–
–
–
–
–
–
–
–
–
Message delivery
Transport protocol mediation
Event capture
Intelligent routing
Orchestration
Transformation
BPM
Adapters
And much, much more…
Questions: [email protected]
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, Freemarker
Content-based routing
–
–
•
For custom service enablement & mediation
Transformation
–
•
JMS (JBossMQ, JBoss Messaging, ActiveMQ, MQSeries, Oracle AQ, TIBCO EMS)
FTP, SOAP, email, database, shared file system
JAX-R based
UDDI support out-of-the-box
Message Store
Gateways
Extensive examples and documentation
And more…
Questions: [email protected]
JBoss ESB 4.2
• JMX Microkernel
• Federated Clustering
• WS-*
•
•
•
•
•
•
•
– SOAP
•
– WSDL
•
– JAX-WS Annotated POJO Endpoints
•
– EJB Endpoints
•
– JAXB 2.0
BPEL 2.0
•
New Deployment Architecture •
.esb Archive
•
Hot Deployable Core Services •
Content Based Filter
Business Rules Services
Native Process Orchestration
Hibernate Gateway/Listener
HTTP Gateway/Listener
Groovy Scripting
Declarative Message Store
JCA Container
Spring Action AOP & POJO
Monitoring & Mgmt Tools
Additional EIP examples
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
Out of the Box Actions
•
•
•
•
•
•
•
•
•
•
•
•
•
AbstractSpringAction
Aggregator
BeanConfiguredAction
BpmProcessor
BusinessRulesProcessor
ByteArrayToString
ContentBasedRouter
ContentBasedWiretap
GroovyActionProcessor
HttpRouter
JMSRouter
LongToDateConverter
MessageFilter
•
•
•
•
•
•
•
•
•
•
•
MessagePersister
Notifier
ObjectToCSVString
ObjectToXStream
SmooksTransformer
SOAPProcessor
SOAPClient
StaticRouter
StaticWiretap
SystemPrintln
XStreamToObject
Refer to the MessageActionGuide.pdf
Questions: [email protected]
Basic Service Demo
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 : “express";
end
rule "Routing Rule using XPATH Less"
when
xpathLessThan "/Order/@totalAmount", "50.0"
then
Log : "Really It's NORMAL Shipping";
Destination : “normal";
end
Destination is determined by the jboss-esb.xml
Questions: [email protected]
Load Balancing & Fail-Over
The same discount_service.esb can be deployed to multiple ESB instances/nodes. Each one
is a new EPRs in the registry. The routing engine is clever enough to load-balance and failover between the various EPRs. Should no EPR be available, it will scheduled the message
for redelivery, waiting N seconds and retrying all possible EPRs found at that time.
Questions: [email protected]
Load-Balancing Demo
Deployment Options
• 1) ESB “within” an Application Server – Users have existing
investments in the J2EE/Java EE App Servers and wish to run the
ESB as a set of components in that App Server.
– JBoss ESB can run “within” the JBoss Enterprise Application Platform 4.2
• 2) ESB “beside” an Application Server – Users wish to leave their
existing application server environments untouched but still add
mediation, SOA & integration capabilities.
– JBoss ESB has its own lightweight engine/container for the hosting
mediation services. It can run “beside” your existing middleware from
your vendor of choice.
• 3) ESB “standalone” in a J2SE environment – this option is
primarily for development & testing purposes
Questions: [email protected]
Management & Monitoring
• 4.2 Release is focused on JMX instrumentation, the
ability to monitor the health and load of every distributed
service as well as start, stop & restart them remotely.
Questions: [email protected]
Management & Monitoring Architecture
Questions: [email protected]
Mgmt & Monitoring
Demo
Orchestration
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]
Orchestration Designer
Questions: [email protected]
Orchestration Demo
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, review the webservice_bpel
quickstart, specifically the ActiveBPELOrchestration.odp 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]
Active Endpoints Designer
Questions: [email protected]
Active Endpoints Console
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
Questions?
Where’s the Logic?
•
•
•
•
•
As a scriptlet in your JSP
Behind your Swing Button Click Action Handler
In your Struts Action
In your DAOs
In your Stored Procedures
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]
Silos Across the Enterprise
Client
Client
Manufacturing
Accounting
Client
CRM
Ordering
Warehouse
Questions: [email protected]
Client
Integrating Silos (Dump & Load)
Client
Client
Web
5250
PHP
SOAP
RPG
ASCII
FTP
DUMP
ASCII
FTP
DB/2 400
MySQL
Accounting
FTP
Client
CRM
Ordering
Client
Warehouse
VisualBasic
Struts
VisualBasic
DAO
ASCII
Stored Proc
Oracle
SQL Server
ASCII
Questions: [email protected]
Manufacturing
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]
Splice Technique
Web Order Entry
Web Order Entry 2
Web
Web
JSF
Struts
Seam
Interceptors
AOP
queue
EJB3
Spring
queue
Hibernate
iBatis
Hibernate
Callback Listeners
Oracle
DB/2
JBoss ESB
Questions: [email protected]