Oracle Enterprise Service Bus: The Foundation for Service-Oriented Architecture Demed L’Her, Sr. Principal Product Manager, Oracle Integration Dave Berry, Sr. Manager, Oracle Integration Program

• The Oracle SOA Suite • Enterprise Service Bus: Foundation for SOA • ESB Usage Patterns • Features & Characteristics • Conclusion Oracle Fusion Middleware The Oracle SOA Platform

BPA Suite BAM BI Enterprise MANAGEMENT Manager Analyst& Business System ROUTINGEvents & ORCHESTRATION Analytics GOVERNANCE MONITORINGTools Monitoring Monitoring

JDeveloper BPEL Process Manager Web Services Manager Native Human Business BPEL Workflow Rules Policies App Dev EnterpriseEVENTS Service & CONNECTIVITYBus Framework Multi XSLT Routing Protocol Transform Security

Adapters B2B SES Registry

AppsDB Legacy Partners RFID UDDI

Messaging J2EE Application Server Oracle AS, JBoss, WebLogic, WebSphere Program

• The Oracle SOA Suite • Enterprise Service Bus: Foundation for SOA • ESB Usage Patterns • Features & Characteristics • Conclusion Oracle Enterprise Service Bus: Objectives

• No Coding Required • Put proprietary technologies at the edges of SOA • Abstract IT resources as services

Achieve “Separation of Concerns” Between IT and Business How IT events can negatively impact business processes

Database moves jdbc :oracle :thin : jdbc :oracle :thin : saturn:1521:orcl mars :1521:orcl DB DB

Host:10.10.10.10 Host:10.10.10.10 Port:2320 Port:2320 SAP SAP Loan approval process approval Loan process approval Loan

BPM BPM

Business process needs revision! Achieving Separation of Concerns

Database moves

jdbc :oracle :thin : jdbc :oracle :thin : saturn:1521:orcl mars :1521:orcl DB DB

Host:10.10.10.10 Host:10.10.10.10 Port:2320 Port:2320 SAP SAP CreateCustomer.wsdl Loan approval process approval Loan process approval Loan

CreateCustomer.wsdl jdbc :oracle :thin : jupiter:1523:audit Audit BPM ESB BPM ESB DB

Business process Audit DB added remains unchanged Oracle Enterprise Service Bus: The Foundation for SOA

ESB is a multi-protocol fabric to separate integration concerns from applications and business logic

How is this achieved?

1. Virtualize Endpoints: From resources to services 2. Transform: Convert data to target formats 3. Route: Reliably transport and route data over a variety of protocols

Expose everything as web services 1. Standards-based: XPath, XSLT, SOAP, JMS, JCA, … 2. Hot-pluggable: J2EE, JMS, Database, … Virtualize Endpoints: Connecting to Target Systems

1. Web Services: PeopleSoft, Amazon, … 2. Applications: e-Business Suite, SAP, … 3. Legacy: CICS, Tuxedo, … 4. Technologies: database, file, JMS, …

Non-WS Connectivity through Adapters • Standard JCA 1.5 • Transactional (whenever possible) • Sync, Async, bi-directional • Wizards-driven, graphical introspection of target systems

Adapters Bundled with ESB AQ, MQ, RDBMS, File, FTP, JMS, MQ, Oracle Applications … and 300+ more available via OEM (iWay, Attunity)! Virtualize Endpoints: Web-service enablement of existing resources

Host:10.10.10.10, Port:2320 Service CRM Consumer

Native API [proprietary protocol] Native API

Host:10.10.10.10 Port:2320 JCA CRM CreateCustomer.wsdl Adapter Service [proprietary Native API protocol] Native API Consumer [SOAP]

ESB

Service consumers no longer need to talk proprietary protocols Virtualize Endpoints: Introspecting Target Systems

 DB

 e-Business Suite

JMS Transform Convert data as it flows through the bus

• Canonical or point-to-point transformations

• Standard XSLT for expressing transformations

• Drag-and-drop graphical mapping tool

• “Smart” mapping tool , dictionary-based

• Domain-Value Maps for fast, static, in-memory lookups Route Reliably transport and route data over a variety of protocols

Reliable messaging and guaranteed delivery are key in highly-distributed, asynchronous, “fire-and- forget” SOA where senders do not wait for a response.

• Internally: uses JMS for asynchronous flows

• On the edges: wide support of transports SOAP , JMS , legacy messaging

• Hot-pluggable transport: 3rd Party JMS, DB, J2EE… Route: Taking Decisions

• Content-based: if total_price > 500, route to FedEx

• Header-based: if message_type = order, route to fulfillment

• Standard XPath to define routing expressions

• Graphical expression builder

• Routing rules can be altered at runtime Expose Everything As A Web-Service

• By default, any ESB service is exposed as a web service (WSDL auto- generated)

• Each step of an ESB flow is a potential entry point

• Each web-service can be secured Program

• The Oracle SOA Suite • Enterprise Service Bus: Foundation for SOA • ESB Usage Patterns • Features & Characteristics • Conclusion Usage Patterns: simple synchronous request/reply flow

Basic RPC mechanism

GetCustomer.wsdl requestor Usage Patterns: non-deterministic synchronous request/reply flow

• Consumer does not explicitly know the service provider • Service provider selection based on message content/header

GetCustomer.wsdl requestor Usage Patterns: simple 1-way asynchronous flow

• The simplest but also the most typical ESB pattern • “Fire-and-forget”

CreateCustomer.wsdl event Usage Patterns: fan-out 1-way asynchronous flow

• 1 event triggers multiple parallel operations • All outbound operations can be grouped in one or more transactions Customer details are 2 logged in the audit database

Customer details CreateCustomer.wsdl 2 are enqueued on event JMS to the CRM

An event is placed on 1 the bus to notify of a new customer. Payload Customer details is customer details. 2 are enqueued on MQ to the mainframe Usage Patterns: Response-forwarding

Can be used for Get customer address • Routing based on lookup 2 from database • Asynchronous “request/reply”

ShipOrder.wsdl event Combine order details 3 An event is placed on and customer details 1 the bus to indicate an to prepare shipping order is ready for shipment. Payload consists of order details and customer ID. Usage Patterns: Canonical Data Model

• All messages on the bus are converted to a common data model → Reduces the overall number of maps to generate → Respective application owners only need to know about 2 data models: their own one + the canonical one.

CRM ERP CRM ERP

COMMON DATA MODEL (Customer Object)

Billing Shipping Billing Shipping Program

• The Oracle SOA Suite • Enterprise Service Bus: Foundation for SOA • ESB Usage Patterns • Features & Characteristics • Conclusion ESB Control Overview

Routing Services Manage & Search Transformation

DB Adapter

Flow JMS Adapter Instances

Flexible Filter Error Retry Expression

Overview Navigator BPEL Process ESB Designer Overview Component Palette

Adapter JDev Services Application Routing Services Transformation JDev Project DB Adapter Metadata • WSDL • XSD • XSL File Adapter Filters JMS Adapter

Operation 3-Tiered Architecture

JDeveloper ESB Control UI Tier (design) (monitoring)

update export import routing monitor

Metadata Runtime Middle Tier Server JMS Servers J2EE J2EE

JDBC JDBC

Artifacts Relational Data Tier XSD, XSLT Service MD, WSDL, Maps Routing Rules , Instances, Errors MDS Transactions & Exceptions Handling

End-to-end transaction/XA support via JTA Ability to set transaction boundaries Built-in “error hospital” to persist and resubmit failed messages

SYNCHRONOUS FLOW ASYNCHRONOUS FLOW

Submitter is in charge: ESB is in charge: • Persists messages • Persists messages • Resubmit • Retries, resubmit Standards

• Virtualize XML, XSD, JCA, WSDL, WSIF, WSIL, JNDI, JDBC

• Transform XML, XSD, XSLT, PL/SQL

• Route XPath, JMS, SOAP, HTTP, JDBC, XA, JTA

Standards Drive Hot Pluggability Security

Main security challenges in distributed environments

• Islands of security lead to security gaps • No end-to-end visibility • Developers are not necessarily security experts • Modifying policies is extremely complex

ESB leverages the Oracle SOA infrastructure for security

J2EE Container (OC4J) at service level Oracle Web Services Manager to configure global policies No security hard-coded in endpoints Deployment options: gateway or agent modes ESB sets and propagates security headers (WS-Security) ESB, part of a truly integrated suite

1. Installation • Single installer – J2EE to Human Workflow under 20mn • Single deployment platform

2. Design-Time • Single design environment

3. Runtime • Single monitoring UI (web browser) with Single Sign-On • Direct Java binding between co-located components • End-to-end instance tracking Program

• The Oracle SOA Suite • Enterprise Service Bus: Foundation for SOA • ESB Usage Patterns • Features & Characteristics • Conclusion Oracle Enterprise Service Bus

1 Achieve Separation of Concerns IT/Business

2 Multi-protocol bus, Foundation for SOA

3 Virtualize, Transform, Route

4 High-Availability / Scalability

5 Hot-pluggable based on Open Standards

For more info: visit http://otn.oracle.com/soa