Skip Headers
Oracle® Enterprise Service Bus Developer's Guide
10g (10.1.3.1.0)

Part Number B28211-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

1 Introduction to Oracle Enterprise Service Bus

This chapter introduces Oracle Enterprise Service Bus features, concepts, and components.

This chapter contains the following topics:

Oracle Enterprise Service Bus Concepts Overview

An enterprise service bus moves data among multiple endpoints, both within and outside of an enterprise. It uses open standards to connect, transform, and route business documents as Extensible Markup Language (XML) messages, among disparate applications. It enables monitoring and management of business data, with minimal impact on existing applications. An enterprise service bus is the underlying infrastructure for delivering a service-oriented architecture (SOA) and event-driven architecture (EDA).

Oracle Enterprise Service Bus is the foundation for services using SOA and EDA. At its core, it is a loosely coupled application framework that provides your business with increased flexibility, reusability, and overall responsiveness in a distributed, heterogeneous, message-oriented environment using industry standards.

Oracle Enterprise Service Bus is a component of Oracle SOA Suite. Oracle SOA Suite is a standards-based suite that provides an integrated design-time environment and a common architecture for developing enterprise applications. Oracle SOA Suite enables services to be created, managed, and orchestrated into composite applications and business processes.

Oracle Enterprise Service Bus contains the following components:

Oracle Enterprise Service Bus Integration Features

Oracle Enterprise Service Bus features that provide the ability to integrate applications fall into three broad categories:

Connectivity

Connectivity is provided through adapter services and Simple Object Access Protocol (SOAP) invocation services, as described in the list that follows:

  • SOAP invocations services

    SOAP invocation services provide connectivity with external SOAP clients, such as Oracle BPEL Process Manager, Apache Axis, and Microsoft .NET. You can call Oracle Enterprise Service Bus services from such clients, or you can call those products from Oracle Enterprise Service Bus.

    You might call Oracle Enterprise Service Bus from Oracle BPEL Process Manager, for example, to take advantage of the document routing features that Oracle Enterprise Service Bus provides, or you might call Microsoft .NET from Oracle Enterprise Service Bus to integrate a legacy Microsoft .NET infrastructure.

  • WSIF

    Oracle Enterprise Service Bus utilizes WSIF bindings in a WSDL document to perform native Java calls to external java interfaces. WSIF is also used internally by the JCA framework.

  • Adapter services

    Oracle Application Server adapters provide bidirectional, real-time data access to virtually any data source in your enterprise.

    An adapter either listens for, or polls for, events in the source application it supports. When listening for events, an adapter registers as a listener for the application that is configured to push events to the adapter. The adapter can also poll the back-end application, such as a database or file, for the events required by Oracle Enterprise Service Bus.

    By registering adapters with Oracle Enterprise Service Bus (using a wizard), you integrate external data sources with Oracle Enterprise Service Bus, and ultimately, with each other.

    Oracle Enterprise Service Bus Server enables you to define inbound and outbound adapter services. An inbound adapter service receives data from an external data source and transforms it into an XML message. An outbound adapter service sends data to a target application by transforming an XML message into the native format of the target application. Oracle Enterprise Service Bus Server currently supports the Oracle adapters described in Table 1-1.

Table 1-1 Oracle Adapter Services

Adapter Service Description

File/FTP adapter service

An inbound file/FTP adapter service reads data from a local or remote file system, transforms the file data into an XML message and sends it to Oracle Enterprise Service Bus when a new text file appears in a local or remote file system.

An outbound file/FTP adapter service transforms the contents of an XML messages to a text file and writes it to a local or remote file system.

Database adapter service

An inbound database adapter service sends an XML message to Oracle Enterprise Service Bus when a SQL insert, update, or delete operation is performed against a database.

An outbound database adapter transforms the contents of an XML message into a SQL insert, update, or delete operation on the target database.

JMS adapter service

An inbound JMS adapter service listens on a Java Message Service (Oracle and non- Oracle) destination and forwards incoming messages to the Oracle Enterprise Service Bus.

An outbound JMS adapter service writes messages from Oracle Enterprise Service Bus to a Java Message Service external to Oracle Enterprise Service Bus.

MQ adapter service

An inbound Native MQSeries adapter service sends an XML message to Oracle Enterprise Service Bus when new XML message is received by a queue.

An outbound Native MQSeries adapter service writes messages from Oracle Enterprise Service Bus to a message queue.

AQ adapter service

An inbound AQ adapter service sends an XML message to Oracle Enterprise Service Bus when a new message is received by an Oracle Advanced Queuing single or multiconsumer queue.

An outbound AQ adapter service sends messages from Oracle Enterprise Service Bus to an Oracle Advanced Queuing single or multiconsumer queues.

Oracle Applications (OA) Adapter services

An inbound OA adapter sends XML messages to Oracle Enterprise Service Bus on receiving messages from an Oracle E-Business Suite interface.

An outbound OA Adapter inserts data from Oracle Enterprise Service Bus into Oracle Applications using interface tables, APIs, and concurrent programs.

Custom adapter service

A custom adapter service for configuring third party adapters.


Any service, except an inbound adapter service, created in Oracle Enterprise Service Bus service, such as an outbound adapter service or routing service (described in "Content-Based and Header-Based Routing"), is automatically exposed as a SOAP service without requiring you to provide configuration details. Oracle ESB Control (described in "Introduction to the Oracle Enterprise Service Bus Control") lists the concrete WSDL URL for these services on the Definitions tab. You can use the concrete WSDL URL to invoke the service using SOAP over Hypertext Transfer Protocol (HTTP) from Oracle JDeveloper or Microsoft .Net. On the Definitions tab, you also specify whether a service can be invoked by an application (external) outside of Oracle Enterprise Service Bus.

Document Transformation

Oracle Enterprise Service Bus includes a standards-based data mapper launched from within Oracle JDeveloper. The data mapper specifies an XSL file to transform data from one XML schema to another, thus enabling data interchange among applications using different schemas. Multiple transformations may be required to achieve the desired result. These transformations can be reused, as needed, across your enterprise.

Figure 1-1 shows an example of the data mapper being used to map data from one schema to another.

Figure 1-1 Sample Data Mapper Tool

Description of Figure 1-1 follows
Description of "Figure 1-1 Sample Data Mapper Tool"

Content-Based and Header-Based Routing

Data contained within XML messages are distributed from the source application to a target application using routing services. As the name suggests, a routing service determines how a message gets from one point to another within the Oracle Enterprise Service Bus environment as defined by the routing rules it applies on the XML message. As you can define rules to route messages based on the message content, that routing is known as a content-based routing service. Routing that is based on header transformation and filtering is known as header-based routing.

Routing rules specify the set of services (referred to as target services) that Oracle Enterprise Service Bus invoke when the routing service receives a message. When you configure routing rules, you specify the following details:

  • Whether a filter expression is applied.

    A filter expression specifies that the contents (payload) of a message be analyzed before any service is invoked. For example, using the scenario described in "Sample Oracle Enterprise Service Bus Scenario", you might apply a filter expression that specifies that the database adapter service be invoked only if the message includes customer contact information.

  • Whether a document transformation is applied.

    See Document Transformation for information about transformations.

  • Whether execution is synchronous or asynchronous

    If you specify that execution is synchronous, then Oracle Enterprise Service Bus invokes the target service immediately; control is not returned to the routing service until the message has been received by the target service for processing.

    If you specify that execution is asynchronous, then Oracle Enterprise Service Bus uses JMS for delivering the message to the target service, which will be invoked at a later time. Control is returned to the routing service immediately, before the target service has received the message.

  • The priority level for execution

    The priority level, determined by the order in which routing rules are ordered, determines the order in which outbound service invocation actions are executed.

For information about routing rules, see "Specifying Routing Rules". For information about header transformation and filtering, see "Header Transformation and Filtering".

Creating, Configuring, and Managing Oracle Enterprise Service Bus

The two main tools for creating, configuring, and managing Oracle Enterprise Service Bus are the following:

The following two sections introduce these tools in more detail:

Introduction to Oracle JDeveloper

Oracle JDeveloper is an integrated development environment (IDE) for building applications and Web services using Java, XML, and SQL standards. Oracle JDeveloper supports the entire development life cycle with integrated features for designing, coding, debugging, testing, profiling, tuning, and registering applications. A visual and declarative development approach and the Oracle Application Development Framework (ADF) work together to simplify application development and reduce coding tasks.

Oracle Enterprise Service Bus includes support for the following in Oracle JDeveloper:

  • Transformations and routing from inbound and outbound adapter services

  • Adapters

  • SOAP Services

Figure 1-2 shows Oracle JDeveloper with an ESB project.

Figure 1-2 Sample Oracle JDeveloper

Description of Figure 1-2 follows
Description of "Figure 1-2 Sample Oracle JDeveloper"

The Applications Navigator displays the project files that you have created. In Figure 1-2, for example, the Applications Navigator includes an application named ESBSamples, which contains the project node entitled CustomerData. When the CustomerData node is expanded you can see the WSDL files that define the adapter services for the application, and the XSD files that define the structure of the data that will be routed across the Oracle Enterprise Service Bus.

For more information, see Chapter 2, "Developing the Enterprise Service Bus".

Introduction to the Oracle Enterprise Service Bus Control

You monitor and make run-time adjustments to the Oracle Enterprise Service Bus configuration using the Oracle ESB Control. The Oracle ESB Control provides the Services, Instances, and Maps views, which you select by clicking the icons that run across the top of the page.

  • The Services view enables you to view service definitions, update routing rules, define trackable fields, and view a schematic diagram of the services. For more information, see "Oracle ESB Control Services View".

  • The Instances view enables you to view details about message processing across an ESB system. For more information, see "Oracle ESB Control Instances View".

  • The Maps view enables you to create, update, and delete domain-value maps, as well as view, export, and import existing domain-value maps. For more information, see "Oracle ESB Control Maps View".

Figure 1-3 is an example of the Services view of Oracle ESB Control.

Figure 1-3 Oracle ESB Control - Services View

Description of Figure 1-3 follows
Description of "Figure 1-3 Oracle ESB Control - Services View"

For more information, see Chapter 3, "Monitoring the Enterprise Service Bus".

Oracle Enterprise Service Bus Architecture

ESB services are designed and configured with Oracle JDeveloper and Oracle ESB Control user interfaces. The ESB project which contains the services is registered to the ESB Server. The ESB Server supports multiple protocol bindings including HTTP/SOAP, JMS, JCA, WSIF, and Java that ensure guaranteed, reliable message delivery using synchronous/asynchronous, request/reply or publish/subscribe models. However, the ESB Server does not support Remote Method Invocation (RMI).

When an ESB project is registered with the ESB server, ESB files created in Oracle JDeveloper or Oracle ESB Control are deployed to the design time metadata server. The following JMS topics are running on the design time metadata server: control, monitor, resubmit, and defer. Also running on the metadata server are the following servlets: console, WSIL, design time, WebDav, and SOAP provider.

The created or updated service definition files are translated and captured in a relational form in the ORAESB schema in the database repository while the XSD, XSL, WSDL, and map files are written to the file system. The service definition files have pointers to the XSD, XSL, WSDL, and map files.

An ESB runtime server, or multiple servers in a cluster, accesses the control topic file on the design metadata server to cache the information for the ESB runtime services. ESB runtime servers listen on the control topic to get notified of any metadata changes. These notifications result into reload of cached metadata for the entities that changed. The ESB runtime server contains the following: server execution, memory cache, JMS error topic, XML/XSL engine, and JCA adapter agents.

At runtime, the ESB message flow is initiated by an inbound adapter polling or listening for an event, such as a file copied to the directory specified for an inbound file adapter. The ESB flow is also initiated when an external SOAP/HTTP process invokes the Web service associated with an ESB routing service.

Figure 1-4 is an illustration of ESB architecture running on a single instance. For an illustration of ESB architecture on a clustered environment, see Figure 8-1.

Figure 1-4 ESB Architecture - Single Instance Environment

Description of Figure 1-4 follows
Description of "Figure 1-4 ESB Architecture - Single Instance Environment"

Sample Oracle Enterprise Service Bus Scenario

In most business environments, customer data resides in disparate sources, including business partners, legacy applications, enterprise applications, databases, and custom applications. The challenge of integrating this data can be met using Oracle Enterprise Service Bus to deliver appropriate real-time data access to all applications that update or have a common interest in the same data.

For example, Oracle Enterprise Service Bus might accept data contained in a text file, transform it to a format appropriate for updating a database that serves as a customer repository, and route and deliver the data to that database.

To accomplish all the required tasks, Oracle Enterprise Service Bus follows these basic steps, which are shown in Figure 1-5. These steps are simplified for the purposes of the introductory example.

Figure 1-5 illustrates a scenario in which Oracle Enterprise Service Bus:

  1. Receives the customer data from a file system as a text file, through an inbound file adapter service named CustIn. The CustIn adapter service sends the message to a routing service named CustIn_RS.

  2. The CustIn_RS routing service transforms the data format from the file adapter's schema into the canonical XML schema, and sends the message to the routing service named CustOut_RS.

  3. The CustOut_RS routing service:

    • Routes the message in the canonical format to the CRMOut file adapter service.

    • Applies a filter expression to the XML message payload to determine whether the message should be routed to the outbound adapter service for the Customer Information Database, CustDBOut.

    • Invokes the appropriate adapter services (as determined by the filter expression). Routing rules specify that messages bound for the CustDBOut service be sent synchronously, while those bound for the CRMOut service be sent asynchronously.

      • If the receiving adapter service is CustDBOut, then the CustDBOut service is invoked immediately and control is not returned to the CustOut_RS service until the message has been received by CustDBOut.

      • If the receiving adapter service is CRMOut, then the message is sent to JMS and control is immediately returned to the CustOut_RS service.

  4. The outbound adapter service delivers the message to its associated external application.

Figure 1-5 Illustration of a Sample ESB Scenario

Description of Figure 1-5 follows
Description of "Figure 1-5 Illustration of a Sample ESB Scenario"


See Also:

Oracle Enterprise Service Bus Quick Start Guide for step-by-step instructions on implementing this scenario

Starting, Stopping, and Accessing Oracle Enterprise Service Bus Components

The key Oracle Enterprise Service Bus components are the ESB Server, Oracle JDeveloper, and Oracle ESB Control.

This section contains the following topics:

For information about the system requirements for and the installation of Oracle Enterprise Service Bus, see Oracle Enterprise Service Bus Installation Guide.

For information about the system requirements for and the installation of Oracle Application Server 10g Release 3 (10.1.3.1.0) which provides the Oracle SOA Suite, see the Oracle Application Server 10g Release 3 (10.1.3.1.0) installation guide for your system.

For information about getting started with the Oracle SOA Suite components of Oracle Application Server 10g Release 3 (10.1.3.1.0), see Oracle Application Server Administrator's Guide.


Note:

The Oracle Application Server SOA Suite Basic Install type is recommended for developers. For information about the Oracle SOA Suite installation, see the Oracle Application Server 10g Release 3 (10.1.3.1.0) installation guide for your system. For information about stopping and starting Oracle SOA Suite components of Oracle Application Server, see Oracle Application Server Administrator's Guide.

Starting and Stopping the ESB Server

This section discusses starting and stopping the ESB Server for the Oracle Enterprise Service Bus standalone Developers installation type. For information about the Oracle Enterprise Service Bus installation types, see Oracle Enterprise Service Bus Installation Guide.

The process of starting and stopping the ESB Server depends on the operating system where the ESB server is located.

Windows Installation

To start the ESB Server on Windows, use one of the following methods:

  • From the desktop Start button, select Programs > Oracle – Oracle_Home > Oracle ESB > Start ESB Server, where Oracle_Home is the name of the Oracle home where you installed Oracle Enterprise Service Bus.

  • From a command window, run Oracle_Home/opnm/bin/opmnctl startall where Oracle_Home is the name of the Oracle home where you installed Oracle Enterprise Service Bus

To stop the ESB Server on Windows, use one of the following methods:

  • From the desktop Start button, select Programs > Oracle – Oracle_Home > Oracle ESB > Stop ESB Server, where Oracle_Home is the name of the Oracle home where you installed Oracle Enterprise Service Bus.

  • From a command window, run Oracle_Home/opnm/bin/opmnctl stopall where Oracle_Home is the name of the Oracle home where you installed Oracle Enterprise Service Bus

Linux Installation

To start the ESB Server on Linux:

  1. Start a command prompt and navigate to the Oracle_Home/opmn/bin folder.

  2. Run the following from the operating system prompt:

    opmnctl startall

To stop the ESB Server on Linux:

  1. Start a command prompt and navigate to the Oracle_Home/opmn/bin folder.

  2. Run the following from the operating system prompt:

    opmnctl stopall

To check the status of the ESB Server on Linux:

  1. Start a command prompt and navigate to the Oracle_Home/opmn/bin folder.

  2. Run the following from the operating system prompt:

    opmnctl status

Opening Oracle JDeveloper

To launch Oracle JDeveloper, run the jdeveloper executable in the JDeveloper home directory.

JDeveloper includes features that are not fully tested have been marked as Preview features. These features will be supported in a later release. To start JDeveloper in Preview mode, run the following at an operating system prompt:

JDeveloper_Home/jdev/bin/jdev.exe -J"-Dpreview_mode=true"

Oracle JDeveloper opens, as shown in Figure 1-6.

Figure 1-6 Oracle JDeveloper – Initial Display

Description of Figure 1-6 follows
Description of "Figure 1-6 Oracle JDeveloper – Initial Display"

To close Oracle JDeveloper, click Exit in the File menu.

Opening the Oracle ESB Control

The Oracle ESB Control is launched from a Web browser. The Oracle ESB Control can be accessed with the following URL:

http://host_name:port_number/esb

In the URL example, host_name is the host name where the ESB Server is running and port_number is the Oracle HTTP Server Listen port number, which is listed in the output from the opmnctl status -l command. For more information about viewing port numbers, see "Viewing Port Numbers".

On Windows, you can launch the Oracle ESB Control from the Start menu. Select All Programs > Oracle – Oracle_Home > Oracle ESB > ESB Control from the desktop Start button, where Oracle_Home is the name of the Oracle home where you installed Oracle Enterprise Service Bus.

Before opening the Oracle ESB Control, you must first start the ESB Server as described in "Starting and Stopping the ESB Server".

The Oracle ESB Control opens, as shown in Figure 1-7.

Figure 1-7 Oracle ESB Control - Initial Display

Description of Figure 1-7 follows
Description of "Figure 1-7 Oracle ESB Control - Initial Display"

In Figure 1-7, The BPEL System is default location where BPEL services display up if they are on the same SOA Suite container. The default service group matches the BPEL Domain name for that BPEL process.