Monday May 02, 2016

April '16 Bundle Patches for SOA and

April Bundle Patches for SOA and were released on April 19,2015:

Product Version

Bundle Patch Name

Bundle Patch Number


Bundle Patch 160418 (

Patch 23079738


Bundle Patch 160419 (

Patch 22970958

For more information:

1. Note 1485949.1 SOA 11g and 12c: Bundle Patch Reference

2. Note 2061926.1 Oracle Database, Enterprise Manager and Middleware - Change to Patch Numbering from Nov 2015 onwards

3. Fusion Middleware Support Blog

Friday Apr 17, 2015

July '15 Bundle Patches for SOA and

July Bundle Patches for SOA, SOA and OSB were released on April 14,2015:

Product Version

Bundle Patch Name

Bundle Patch Number



Bundle Patch 8 (

Patch 20900797


Bundle Patch 3 (

Patch 20900599

For more information please refer to the following notes:

  1. Note 1485949.1 SOA 11g and 12c: Bundle Patch Reference

Friday Jan 23, 2015

Now Available and Free to Customers: Oracle OpenWorld 2014 Top Sessions

Check out all available middleware-related Oracle OpenWorld sessions . Featured sessions include:

· Processing Large Files with Oracle Managed File Transfer and Oracle SOA Suite

Dave Berry, from the Oracle SOA group, explores various use cases for solving the age-old problem of processing large files, including using standard Oracle Managed File Transfer compression to reduce the upload time for the end user; using Oracle Managed File Transfer to pass a directory to an Oracle SOA Suite application to process files individually; and, finally, using an Oracle SOA Suite application to debatch very large files delivered from Oracle Managed File Transfer.

· SOA Suite Cloud Service: Tame the Cloud Integration Beast

Oracle's world-class service bus will be available on Oracle Cloud. In this presentation, Oracle Development Director Rajan Modi and Oracle Product Manager Scott Haaland describe how Oracle Service Bus is automatically installed and configured by Oracle's cloud operations infrastructure as soon as you subscribe to the service, and demonstrate how to use Oracle Service Bus in the cloud. You will also find out how you can quickly provision an Oracle Service Bus infrastructure and get to market faster with your Oracle Service Bus implementation projects. Now you can easily integrate your cloud applications with a world-class service bus in the cloud.

· Service Integration Product Strategy: Oracle SOA Suite 12c, the Cloud, and API Management

In this headliner Oracle integration session, senor SOA product managers Vikas Anand, Simone Geib, and Peter Belknap share major enhancements recently released in Oracle SOA Suite 12c as well as exciting new integration initiatives currently under way at Oracle. If you have been wondering how to simplify integration as integration channels expand beyond on-premises to include the cloud, mobile, and the Internet of Things, then hear from Oracle product management about what's new and what's next. Attend this session to get the integration big picture and join in the collaborative Q&A discussion.

· Web Services and SOA Integration Options for Oracle E-Business Suite

Rajesh Ghosh, Director, ATG Development, presents this deep dive into a subset of the web services and SOA-related integration options available to Oracle E-Business Suite systems integrators. He offers a technical look at Oracle E-Business Suite Integrated SOA Gateway, Oracle SOA Suite, Oracle Application Adapters for Data Integration for Oracle E-Business Suite, and other web services options for integrating Oracle E-Business Suite with other applications. Systems integrators and developers will get an overview of the latest integration capabilities and technologies available out of the box with Oracle E-Business Suite and possibly a sneak preview of upcoming functionality and features.

· Introducing Oracle Integration Cloud Service: Simplify Integration to Cloud and Mobile

Axel Allgeier, Software Development VP, Vikas Anand, Product Management Senior Director, and Herb Stiel, Product Development VP, describe the core features of Oracle Integration Cloud Service, a complete iPaaS solution for dramatically simplifying and accelerating cloud-to-cloud and cloud-to-on-premises integrations.

· Oracle Fusion Middleware Upgrade: Best Practices and Strategy

Learn about the latest features and improvements in Oracle Fusion Middleware from Michael Rubino (Senior Director of Software Development) and Renga Rengarajan (Director of Product Management and Architecture), who describe the upgrade process from Oracle Fusion Middleware 11g to 12c as well as from Oracle Fusion Middleware 10g to 11g. In this session, you'll learn how to use Oracle Fusion Middleware Upgrade Assistant and Oracle Fusion Middleware Patch Set Assistant.

Wednesday Jan 21, 2015

Latest and Recommended Bundle Patches for SOA and SOA 12.1.3

The latest and recommended Bundle Patches for SOA and SOA 12.1.3 are as follows:

SOA Version

Bundle Patch Name

Bundle Patch Number


PS6 Bundle Patch 6 (

Patch 19953598


12.1.3 Bundle Patch 1 (

Patch 19707784

Please review Document 1962904.1 before applying this Bundle Patch. The patch readme suggests to apply Patch 20333237 before applying the Bundle Patch. The patch number is incorrect and is actually 20163149.

For more information please refer to Note 1485949.1 SOA 11g: Bundle Patch Reference.

Monday Jan 12, 2015

Malware sites offering Oracle 'patches'


It has come to our attention that there are non-Oracle sites offering Oracle 'fixes' for genuine Oracle error messages.

You probably already don't need to be told, however:

Please do not download these fixes as

  • They are not authorized by us in any way and
  • They are more than likely to be dangerous to your system

If you do encounter one of these sites please create a SR and we will rectify the situation.

Friday Jan 09, 2015

New SOA 12c Oracle Cloud Adapter for RightNow

Oracle Cloud Adapter for Oracle RightNow Cloud Service as been released for Oracle SOA 12c 12.1.3. The adapter supports integration with RightNow Cloud Service via the Connect Web Services for SOAP API. It enables performing the following operations on the RightNow instance:

1. CRUD (create/get/update/destroy)

2. Query (ROQL)

3. Batch of CRUD/Query Operations

The adapter is certified to work with the Oracle SOA Suite and Oracle BPM Suite components including SOA composite applications and Oracle Service Bus.

You can find more information at Oracle Fusion Middleware 12c 12.1.3 Cloud Adapter for RightNow

Wednesday Oct 15, 2014

SOA 12c Upgrade Videos

Our Curriculum Development team has created a series of short videos related to SOA 12c upgrade. This is a fast and easy way to get familiar with the 12c upgrade process and the steps involved.

Videos can be found in our SOA 12c document library at

Monday Feb 24, 2014

Introduction to and bpel.sps Diagnostic Dumps in PS6

There are a couple of new BPEL Diagnostic Dumps that haven't been discussed previously and offer some interesting value. These dumps are and bpel.sps. Here I'll describe what they collect and how to use them. Note that these dumps are available starting in SOA Suite (PS6).

As with all diagnostic dumps, these can be executed from WLST and this is probably the most convenient way to do so.

  1. Navigate to <MIDDLEWARE_HOME>/oracle_common/common/bin and execute '' (or .cmd).
  2. Connect to a server that is running SOA Suite with 'connect('user','pwd','t3://host:port')
  3. Execute the listDumps command to view the available SOA dumps, 'listDumps(appName='soa-infra')'. You should see bpel.sps and in the list.

The data collected by these dumps may seem familiar, especially if you've used DMS, but they do offer a unique capability in that you can specify a duration over which the data is collected. This differs from other SOA dumps which provide aggregate data from when the component was deployed or DMS which provides aggregate data from when the server was started. First I'll describe the data they collect.

bpel.sps provides aggregate performance statistics for <strong>SYNCHRONOUS</strong> BPEL processes like min, max and average processing time. By default the results are provided in a table format, organized by composite process. provides request level statistics (min, max and avg) but it breaks the stats down by steps in the BPEL engine. So if you have a composite with a BPEL process and you collect this dump over some duration when there is load, you'll get an XML type output that lists each step the BPEL engine took to process each request and every step will have associated statistics. There will only be 1 entry per process / step and a 'count' attribute indicating how many times that step was run. Since it's listing every step in the process, this is a convenient way to see the performance of every activity in the process.

The most unique aspect of these dumps is the ability to specify a time range in which to collect the data. This capability is coupled with the BPEL property statsLastN in a mutually exclusive manner that can be confusing so I'll try to explain it.

If statsLastN is configured for the BPEL engine then you cannot use the duration arguments with these dumps. statsLastN is configured in Fusion Middleware Control under BPEL Properties and then 'More Properties' and specifies the number of BPEL instances to keep statistics on for each deployed process. When enabled, these dumps will provide only the statistics for those instances. So if you have statsLastN set to '10', when you run either of these dumps you will see the statistics for the 10 most recent instances.

If statsLastN is disabled then you must provide the duration argument and optionally the buffer size. The command looks like this:

executeDump(name='bpel.sps', appName='soa-infra', outputFile='/home/oracle/tmp/BPEL_SPS.txt', args={'duration':'10', 'buffer':'1000'})

The duration is in seconds and the buffer says how many entries to store.

Once started in this way, the dump will run for 10 seconds and then provide the output. If there was no load then the statistics will be empty and if statsLastN is enabled you will receive an error.

The output of bpel.sps is self explanatory as it's just a simple table but is more complicated so I wanted to offer a sample:

<stats key="TestHarnessProject:L1SyncBPEL:main:receiveInput:105" min="0" max="1" average="0.2" count="30">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="sensor-send-variable-data" min="0" max="0" average="0.0" count="30">
<stats key="sensor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="TestHarnessProject:L1SyncBPEL:main:replyOutput:387" min="0" max="1" average="0.33" count="30">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="sensor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="TestHarnessProject:L2SyncBPEL:main:If1:Sequence1:L2SyncBPEL_FileBranch_Assign:99" min="0" max="5" average="0.93" count="30">
<stats key="sensor-send-variable-data" min="0" max="0" average="0.0" count="120">
<stats key="sensor-send-activity-data" min="0" max="1" average="0.01" count="60">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="TestHarnessProject:L2SyncBPEL:main:If1:If1:93" min="0" max="1" average="0.06" count="30">
<stats key="TestHarnessProject:L1SyncBPEL:main:If1:elseif:Sequence4:L1SyncBPEL_L2SyncBPELBranch_Embedded:243" min="5001" max="5006" average="5002.46" count="30">
<stats key="sensor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="TestHarnessProject:L1SyncBPEL:main:If1:elseif:Sequence4:L1SyncBPEL_L2SyncBPELBranch_Assign2:267" min="1" max="2" average="1.06" count="30">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">
<stats key="sensor-send-variable-data" min="0" max="0" average="0.0" count="120">
<stats key="sensor-send-activity-data" min="0" max="1" average="0.01" count="60">
<stats key="TestHarnessProject:L1SyncBPEL:main:L1SyncBPEL_Assign1:106" min="0" max="1" average="0.33" count="30">
<stats key="sensor-send-activity-data" min="0" max="1" average="0.01" count="60">
<stats key="sensor-send-variable-data" min="0" max="0" average="0.0" count="30">
<stats key="monitor-send-activity-data" min="0" max="0" average="0.0" count="60">

Here you can see the individual entries for the 'TestHarnessProject' BPEL activities. Every time these activities are run, the stats get updated. If you have a lot of BPEL processes with a lot of activities this output will get very long so it's good to know the names of what you're interested it, whether it's the project or even the specific activities.

As always I encourage you to try this out and have a look at the output. The ability to collect current data in this way is very useful to diagnose sporadic performance issues and see how your applications are performing under various load conditions.

Friday Dec 27, 2013

Basic MQ 7.5 Configuration for SOA Suite 11g (MQ Adapter)

I recently went through an exercise to install, configure and interact with MQ 7.5 through a composite and thought I would share my notes. This is not meant to be a full tutorial on MQ configuration with SOA but more of a cheat sheet to avoid wasting a lot of time like I did. I also make no claim to be an MQ admin so if you see something that's wrong or would benefit from clarification, please add a comment.

MQ Steps:
  1. Download MQ 7.5 from the IBM site (90 day trial license, Windows)

  2. Ran setup which was straightforward. Several questions concerning the domain controller but I said that I don't have any running Win 2000

  3. Started MQ Explorer and created a Queue Manager. Specified Transmission and DeadLetter queues along with exposing an external channel

  4. Created my queueus: Transmission, DeadLetter, LocalQueue1, LocalQueue2

  5. Created a 'Server-connection' channel. Note that the Channel may have a status of 'Inactive' and a red arrow pointing down. I spent a ton of time trying to get the arrow to be green and pointing up with a status of 'Active' but in the end it didn't seem to matter.

  6. Created a new user on the Windows machine that I wanted to connect to MQ as remotely

  7. Added the user to the Channel 'Specific Profiles' Authority Records and gave them all of the authorizations. Right click on the Channel -> Object Authorities -> Manage Authority Records -> Specific Profiles. There should be a default Specific Profile you can edit.

  8. Note: If you want to disable the security for the Channel you can go into the Authority Records and delete the default profile

  9. Using the command 'setmqaut -m <Queue Manager Name> -t qmgr -p <user@pcname> +all' I granted full MQ privs to the new user (command is in <MQ_HOME>/bin)

SOA Steps:
  1. Add the MQ jar files to <DOMAIN_HOME>/lib:,,,, (all can be obtained from the MQ Installation)

  2. Created a new composite application with input and output MQ Adapter instances

  3. The adapters both used the default 'eis/MQ/MQAdapter' JNDI from the default connection pool but be careful b/c the default JNDI in the Adapter wizard is 'eis/MQ/MQSeriesAdapter'. If you don't change it or create a new connection pool then the adapter will fail.

  4. Other values in the adapter wizard were defaults or obvious (queue name and my schema)

  5. In the WLS Console I went into the MQ Adapter deployment -> Configuration -> Connection Pool -> Default Pool to change set some properties

  6. Set channelName, hostName, password, queueManagerName, userID. Everything else I left as default.

  7. Deployed and ran the composite, verifying that the message ended up in the right MQ queue

I ran into some errors along the way:

MQJE001: Completion Code '2', Reason '2035': Due to insufficient permissions for the user I was trying to connect as. To resolve this I had to add the permissions using the 'setmqaut' command mentioned above. To make it simple I just granted full admin.

java.util.MissingResourceException: We document that you can get this if you don't have the correct MQ jar files in <DOMAIN_HOME>/lib. In my case it was due to a missing or wrong Channel Name configured in the connection pool properties.

Admittedly much of this is documented across various resources but I couldn't find anything that provided it all together. Now when I need to do this again in a year and have forgotten everything I'll have this blog post to come back to.

If everything works then you'll see the messages appear in the queue through MQ Explorer where you can then insepct the payload, etc.

Wednesday Nov 27, 2013

How to get Work Manager Information in a WLS or OSB Thread Dump

To analyze issues related to performance or work load, it would be nice to know which work manager is running a given thread. In Oracle Service Bus, a dispatch policy defined for a proxy or a business service relates to a work manager definition in WLS. While analyzing a thread dump, you would like to know which work manager is running a given thread.

Starting with WebLogic Server version 10.3.6, work manager information is shown in a thread dump if work manager / self tuning debugging is enabled. This debug flag can be enabled in the WLS console:

Go to http://<admin-server>:<admin-port>/console - Environment - <your server> - Debug tab:


Enable the DebugSelfTuning debug flag in the work manager section.

After that, work manager information is automatically added to a thread dump. This is a sample stack trace which has work manager information included:

"[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)' for workmanager: XBus Kernel@null@MyCustomWorkManager" id=123 idx=0x1d4 tid=21936 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: java/lang/Object@0xe574a240[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at java/lang/Object.wait(J)V(Native Method)
at java/lang/Object.wait(
at com/bea/wli/sb/pipeline/PipelineContextImpl$SynchronousListener.waitForResponse(
^-- Lock released while waiting: java/lang/Object@0xe574a240[fat lock]
at com/bea/wli/sb/pipeline/PipelineContextImpl.dispatchSync(
at stages/transform/runtime/WsCalloutRuntimeStep$WsCalloutDispatcher.dispatch(
at stages/transform/runtime/WsCalloutRuntimeStep.processMessage(
at com/bea/wli/sb/pipeline/debug/DebuggerRuntimeStep.processMessage(
at com/bea/wli/sb/stages/StageMetadataImpl$WrapperRuntimeStep.processMessage(
at com/bea/wli/sb/stages/impl/SequenceRuntimeStep.processMessage(
at com/bea/wli/sb/pipeline/PipelineStage.processMessage(


Monday Nov 11, 2013

Scripted SOA Diagnostic Dumps for PS6 (

When you upgrade to SOA Suite PS6 ( you acquire a new set of Diagnostic Dumps in addition to what was available in PS5. With more than a dozen to choose from and not wanting to run them one at a time, this blog post provides a sample script to collect them all quickly and hopefully easily. There are several ways that this collection could be scripted and this is just one example.

What is Included:
  • Ant Properties
  • build.xml
  • Python Script

What is Collected:
  • 5 contextual thread dumps at 5 second intervals
  • Diagnostic log entries from the server
  • WLS Image which includes the domain configuration and WLS runtime data
  • Most of the SOA Diagnostic Dumps including those for BPEL runtime, Adapters and composite information from MDS

  1. Download the package and extract it to a location of your choosing
  2. Update the properties file '' to match your environment
  3. Run 'ant' (must be on the path)
  4. Collect the zip package containing the files (by default it will be in the script.output location)

Properties Reference:
  • oracle_common.common.bin: Location of oracle_common/common/bin
  • script.home: Location where you extracted the script and supporting files
  • script.output: Location where you want the collections written
  • username: User name for server connection
  • pwd: Password to connect to the server
  • url: T3 URL for server connection, '<host>:<port>'
  • dump_interval: Interval in seconds between thread dumps
  • log_interval: Duration in minutes that you want to go back for diagnostic log information
Script Package

Dynamic Monitoring Service (DMS) Configuration Dumping and CPU Utilization

There was recently a report of CPU spikes on a system that were occuring at precise 3 hour intervals. Research revealed that the spikes were the result of the Dynamic Monitoring Service generating a metrics dump and writing it under the server 'logs' folder for every WLS server in the domain. This blog provides some information on what this is for and how to control it.

The Dynamic Monitoring Service is a facility in FMw (JRF to be more precise) that collects runtime data on the components deployed to WebLogic. Each component is responsible for how much or how little they use the service and SOA collects a fair amount of information. To view what is collected on any running server you can use the following URL, http://host:port/dms/Spy and login with admin credentials.

DMS is essentially always running and collecting this information in the runtime and to protect against loss of this data it also runs automatic backups, by default at the 3 hour interval mentioned above. Most of the management options for DMS are exposed through WLST but these settings are not so we must open the dms_config.xml file which can be found in DOMAIN_HOME/config/fmwconfig/servers/<server_name>/dms_config.xml.

The contents are fairly short and at the bottom you will find the following entry:

    <dump intervalSeconds="10800" maxSizeMBytes="75" enabled="true"/>

The interval of 10800 seconds corresponds to the 3 hours and the maximum size is 75MB. The file is written as an archive to DOMAIN_HOME/servers/<server_name>/logs/metrics. This archive contains the dump in XML format.

You can disable the dumps all together by simply setting the 'enabled' value to 'false' or of course you could modify the other parameters to suit your needs. Disabling the dumps will NOT impact DMS collections or display at runtime. It will only eliminate these periodic backups.

Wednesday Oct 16, 2013

Transaction Boundaries and Rollbacks in Oracle SOA Suite

A new eCourse/video is available in the Oracle Learning Library, "Transaction Boundaries and Rollbacks in Oracle SOA Suite" .

The course covers:

  • Definition of transaction, XA, Rollback and transaction boundary.
  • BPEL transaction boundaries from a fault propagation point of view
  • Parameters bpel.config.transaction and bpel.config.oneWayDeliveryPolicy for the configuration of both synchronous and asynchronous BPEL processes.
  • Transaction behavior in Mediator
  • Rollback scenarios based on type of faults
  • Rollback using bpelx:rollback within a <throw> activity.

The video is accessible here

Thursday Jul 25, 2013

Using the New RDA 8 with SOA Suite 11g

RDA 8 was released on July 23rd and this blog post is a brief summary of the new, smaller profiles available for SOA Suite and Service Bus 11g.

Install RDA 8

You can download the package from here.

Extract the package to a location of your choosing. It is recommended that if you want to install RDA 8 in the same location as a previous RDA installation, first delete the existing 'rda' directory. You will lose your previous configuration and this is expected when moving from RDA 4.x to 8. When subsequently updating RDA 8.x it is expected that you will be able to preserve your configuration by saving the 'output.cfg' file.

Configure and Run RDA 8

We have added 2 new profiles in RDA 8, one for SOA Suite and one for Service Bus. The purpose of these profiles is to simplify configuration, shorten the collection time and reduce the size of the resultant package.

There are 2 options for each profile, 'offline' (default) and 'online'. The 'online' collections will include a few items that require a connection to the running server and are generally only needed in special circumstances. The SOA Suite online collection adds thread dumps along with soa-infra MDS, composite and WSDL configuration information. The Service Bus 'online' collection adds thread dumps and Service Bus specific Diagnostic Dumps available starting in PS6 (cache contents, JMA and MQ async message tables).

It is recommended that the ORACLE_HOME and DOMAIN_HOME environment variables be set as this will speed / simplify the profile configuration. This can be done by running source <DOMAIN_HOME>/bin/setDomainEnv.

Steps for SOA Suite:
  1. From a command prompt enter the command: (cmd) -CRP -p FM11g_SoaMin
  2. If the environment variables are set appropriately you can hit 'enter' at every prompt and the collection will run automatically. Otherwise continue with the steps.
  3. Accept the default value of the first prompt asking about the network domain
  4. Enter ORACLE_HOME as the Middleware Home location
  5. Confirm or enter a new location for the domain. By default it is <ORACLE_HOME>/user_projects/domains'
  6. Choose whether you want an 'offline' or 'online' collection. The default is 'offline'.
  7. If you have more than one domain in the domains location you will next be asked to choose which domain / domains to analyze.
  8. Select the domain servers to include. The default is all of them.
  9. Choose whether you want to run the OCM collection. For SOA this can be set to 'n' but the default is 'y'

Steps for Service Bus: (Identical except for the name of the profile)
  1. From a command prompt in the RDA installation location enter the command: (cmd) -CRP -p FM11g_OsbMin
  2. If the environment variables are set appropriately you can hit 'enter' at every prompt and the collection will run automatically. Otherwise continue with the steps.
  3. Accept the default value of the first prompt asking about the network domain
  4. Enter ORACLE_HOME as the Middleware Home location
  5. Confirm or enter a new location for the domain. By default it is <ORACLE_HOME>/user_projects/domains'
  6. Choose whether you want an 'offline' or 'online' collection. The default is 'offline'.
  7. If you have more than one domain in the domains location you will next be asked to choose which domain / domains to analyze.
  8. Select the domain servers to include. The default is all of them.
  9. Choose whether you want to run the OCM collection. For SOA this can be set to 'n' but the default is 'y'

The collected files are written to RDA_HOME/output and the zipped package is written to RDA_HOME. If you are interested in viewing the collection you can go to /output and drag the file RDA__start.htm to a browser.

back to top

Friday May 17, 2013

Introduction and Troubleshooting of SOA 11g Database Adapter

SOA 11g Adapters

Oracle SOA Suite 11g Adapters allow Middleware service engines (BPEL, BPM, OSB, etc) to communicate with backend systems like E-Business Suite, Siebel, SAP, Databases, Messaging Systems (MQSeries and Oracle Advanced Queuing), Tuxedo, CICS, etc

SOA provides different types of adapters: Technology, Legacy, Packaged Application and Others. It also allows the creation of custom adapters.

SOA 11g Database Adapter

The Database Adapter enables service engines to communicate with database end points. Databases like Oracle or any other relational database that follows the ANSI SQL standard and provides JDBC drivers. Some of the databases are:

* Oracle 8i and above

* IBM DB/2

* Informix

* Clarion

* Clipper

* Cloudscape


* Dialog

* Essbase

* FOCUS Data Access

* Great Plains

* Microsoft SQL Server

* MUMPS (Digital Standard MUMPS)


* Red Brick


* SAS Transport Format

* Sybase

* Teradata

* Unisys DMS 1100/2200

* UniVerse

* Navision Financials (ODBC 3.x)

* Nucleus

* Paradox

* Pointbase

The database adapter supports inbound and outbound interactions. It is based on standards like J2EE Connector Architecture (JCA), Extensible Markup Language (XML), XML Schema Definition (XSD), and Web Service Definition Language (WSDL).

The adapter is deployed as a RAR file into Weblogic. The figure below shows how to check the deployment. It can also be deployed in any Application Server that supports the standards. App servers like Websphere and JBOSS

Other features associated with the Database Adapter:

  • Uses TopLink to map database tables and data into XML.
  • Transforms DML operations (Merge, Select, Insert, and Update) as Web services. It also supports stored procedures and Pure SQL
  • Supports Polling Strategies to avoid duplicate reads (Physical Delete, Logical Delete, Dequencing Tables and files)
  • Supports Transactions to keep the database in a healthy. Changes to the database are rollback in case of an error
  • Streaming Large Payload. Payload is not stored in memory
  • Schema Validation
  • High Availability. Supports Active-Active or Active-Pasive clusters
  • Performance Tuning

To integrate the Database Adapter with BPEL, create a SOA composite in JDeveloper and drag and drop the adapter to the composite’s Services or Reference region. This will create a Inbound or outbound interaction respectively.

When the adapter component is added to the composite the configuration wizard will open. Through the wizard we define the connection to the database, the type of operation (insert, update, poll, etc), performance parameters, retry logic, etc.

Once the configuration is done, JDeveloper creates a series of SOA artifacts. These files are used by the composite to communicate with the adapter instance during runtime. Some of the artifacts are:

  • <serviceName>.wsdl: This is an abstract WSDL, which defines the service end point in terms of the name of the operations and the input and output XML elements.
  • <serviceName>_table.xsd: This contains the XML file schema for these input and output XML elements. Both these files form the interface to the rest of the SOA project.
  • <serviceName>_or-mappings.xml: It is a TopLink specific file, which is used to describe the mapping between a relational schema and the XML schema. It is used at run time.
  • <serviceName>_db.jca: This contains the internal implementation details of the abstract WSDL. It has two main sections, location and operations. Location is the JNDI name of an adapter instance, that is, eis/DB/SOADemo. Operations describe the action to take against that end point, such as INSERT, UPDATE, SELECT, and POLL.
  • <serviceName>.properties: It is created when tables are imported, and information about them is saved. Based on the properties in the db.jca file and the linked or-mappings.xml file, <seviceName>.properties file generates the correct SQL to execute, parses the input XML, and builds an output XML file matching the XSD file.


The basic step to troubleshoot the adapter is to set the oracle.soa.adapter logger level to Trace:32(FINEST) in the FMW Console

Once this is done, reproduce the issues and check the SOA Manager Server log file MW_HOME/user_projects/domains/<domain_name>/servers/<soa-server>/logs/soa-diagnostic.log

Look for JCABinding and BINDING.JCA-xxxx strings. You should see messages like these:

If a BINDING.JCA error occurred go to My Oracle Support knowledge base and search for it. Remember this is the same knowledge base used by Oracle support engineers when solving Service Requests.

Other References


This is the official blog of the SOA Proactive Support Team. Here we will provide information on our activities, publications, product related information and more. Additionally we look forward to your feedback to improve what we do.


« May 2016