Oracle® Enterprise Service Bus Developer's Guide 10g (10.1.3.3.0) Part Number E10295-01 |
|
|
View PDF |
This chapter introduces Oracle Enterprise Service Bus features, concepts, and components.
This chapter contains the following topics:
Creating, Configuring, and Managing Oracle Enterprise Service Bus
Starting, Stopping, and Accessing Oracle Enterprise Service Bus Components
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:
ESB Server
The ESB Server is the runtime server which listens on the control topic for updates from the ESB Metadata Server and updates its cache.
Oracle ESB Control
The Oracle ESB Control provides a Web-based interface for managing, administering, and monitoring services that you have registered with the ESB Metadata Server.
ESB Metadata Server
The database that holds your ESB metadata such as schemas, transformations, and routing rules. The ESB Metadata Server is the server to which you register the ESB services that you have designed using Oracle JDeveloper and configured using Oracle ESB Control.
Oracle JDeveloper
Oracle JDeveloper is a graphical and user-friendly way to model, edit, and design the services that comprise an Oracle Enterprise Service Bus system.
Oracle Enterprise Service Bus features that provide the ability to integrate applications fall into three broad categories:
Connectivity is provided through adapter services and Simple Object Access Protocol (SOAP) invocation services, as described in the list that follows:
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.
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.
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 |
---|---|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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.
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.
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".
The two main tools for creating, configuring, and managing Oracle Enterprise Service Bus are the following:
Oracle JDeveloper
Oracle JDeveloper is primarily intended for specifying the overall enterprise service bus creation and configuration. It enables you to:
Create inbound and outbound adapter services
Oracle JDeveloper provides an adapter configuration wizard that assists you in creating inbound and outbound adapter services.
Create routing services from inbound adapter services
When you complete the adapter configuration wizard for an inbound adapter service, Oracle JDeveloper gives you the opportunity to create a routing service from the newly created inbound adapter service.
Select the routing service that will route to an outbound service
When you complete the adapter configuration wizard for an outbound adapter service, Oracle JDeveloper gives you the opportunity to specify the routing service that will route to the newly created outbound service.
Specify or create document transformation files (XSL
files)
As part of creating routing services from an inbound adapter service or specifying an existing routing service to an outbound adapter service, you can specify if a transformation is needed.
If a transformation is needed, you can specify that an existing transformation file be used, or specify that you want to create a new transformation file. If you specify that you want to create a new transformation file, Oracle JDeveloper opens the data mapper tool to enable you to do so.
Oracle ESB Control
Oracle ESB Control is primarily intended for run time use. It enables you to:
View the Oracle Enterprise Service Bus configuration graphically.
As shown in Figure 1-3, Oracle ESB Control provides a graphical representation of the inbound and outbound adapter services, the routing services and the connections among them.
Adjust routing rules
Oracle ESB Control provides property pages that enable you to specify or adjust the routing rules for routing services. For example, if you have write privileges you can specify a filter expression, or add or change the document transformation file associated with a routing operation.
View run-time statistics
Oracle ESB Control enables you to view run-time statistics for messages processed by the various services.
Track message instances across the enterprise service bus
Similar to the configuration diagram, Oracle ESB Control provides a graphical representation of the message flow through the services of Oracle Enterprise Service Bus.
You can also use Oracle ESB Control to create systems and service groups. Systems and service groups are described in "Introduction to the Oracle Enterprise Service Bus Control".
The following two sections introduce these tools in more detail:
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:
Figure 1-2 shows Oracle JDeveloper with an ESB project.
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".
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
For more information, see Chapter 3, "Monitoring the Enterprise Service Bus".
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 9-1.
Figure 1-4 ESB Architecture - Single Instance Environment
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:
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
.
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
.
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.
The outbound adapter service delivers the message to its associated external application.
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 scenarioThe 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.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.
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
To start the ESB Server on Linux:
Start a command prompt and navigate to the Oracle_Home
/opmn/bin
folder.
Run the following from the operating system prompt:
opmnctl
startall
To stop the ESB Server on Linux:
Start a command prompt and navigate to the Oracle_Home
/opmn/bin
folder.
Run the following from the operating system prompt:
opmnctl
stopall
To check the status of the ESB Server on Linux:
Start a command prompt and navigate to the Oracle_Home
/opmn/bin
folder.
Run the following from the operating system prompt:
opmnctl
status
To launch Oracle JDeveloper, run the jdeveloper
executable in the JDeveloper home directory. The Oracle JDeveloper is started, as shown in Figure 1-6.
Figure 1-6 Oracle JDeveloper – Initial Display
To close Oracle JDeveloper, click Exit in the File menu.
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
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.