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]