27 Oracle Mediator

This chapter describes issues associated with Oracle Mediator. It includes the following topics:

Note:

The issues and workarounds listed here are those that were known at the time of the product's initial release to the public. Additional issues and workarounds may have been discovered since the initial release. To view the latest known issues associated with Oracle SOA Suite, BPM Suite, and related SOA technologies, go to the Oracle Technology Network (OTN) at:
http://www.oracle.com/technetwork/middleware/docs/aiasoarelnotes-196861.html

27.1 General Issues and Workarounds

This section describes general issue and workarounds. It includes the following topics:

27.1.1 Multi-lingual Support Depends on Database Character Set

If you want to use multi-language support feature for some functions in Oracle Mediator, then, to avoid any unexpected results, you must ensure that these characters are supported by Database character set. For example, for Unit Test function, if the initial message payload in Unit Test includes characters that are not supported by Database character set, then you will see that the characters fail to display correctly in Unit Test part of the Oracle Enterprise Manager Fusion Middleware Control Console. This issue does not occur for a Database that supports Unicode characters.

27.1.2 Oracle Mediator - BPEL Process Manager Callback Processing

If Oracle Mediator calls a BPEL Process with callback processing and timeout, it is a best practice to explicitly handle the Callback exceptions returned from Oracle Mediator, in BPEL process. This is to ensure that the global transaction associated with Callback processing gets committed and is not rolled back. This way, the timeout handler configured in Oracle Mediator will not kick in even if the Callback handling in Oracle Mediator fails.

27.1.3 Mediator Components May Cause SOA Suite Server to Run Out of Memory

Mediator applications may run out of memory sometimes. For example, if the rate of incoming messages to Mediator is faster than the rate of callback messages, then memory accumulation occurs in the Mediator cache.

Workaround

To fix this issue, change the cache size through the Oracle Enterprise Manager Fusion Middleware Control Console by adding the following property in the Parameters attribute of the Mediator configuration properties:

mediator.runtime_cache.limit=<value>

For example, if you set the value of the mediator.runtime_cache.limit property to 100, then the size of the cache will be limited to 100. The cache size refers to the number of objects that can be stored in the cache. You can switch off caching completely by setting this property to zero.

27.1.4 Mediator Advanced Functions Do Not Work in Design Time

Mediator advanced functions such as mhdr:getCompositeName(), mhdr:getHeader require a runtime context to execute. If these functions are run using the Mapper Test functionality during design time, the target XML file is not generated and the following error is thrown:

XML-22044: (Error) Extension function error: Error invoking 'getComponentName':'
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0'

These functions work fine in runtime environment.

27.1.5 Recoverable Case Instances for the Resequencer Are Tracked Incorrectly

In the Enterprise Manager, the number of recoverable case instances shown for the Mediator resequencer equals the number of retries made to that instance rather than the number of actual recoverable instances. This information is for tracking purposes only, and does not result in duplicate messages being sent out.

27.1.6 Limits on Streaming Attachments

You can pass attachments as a stream using Oracle Mediator, but currently only point-to-point with pass-through is supported. Inbound stream attachments can be routed to only one reference, and no assign or transformation rules can be applied.

27.1.7 Oracle Mediator Locks all Groups on Restart

If there are a large number of groups waiting to be processed in the resequencer tables and all the containers are restarted, the first container to restart locks all the groups for processing. Even if the other containers are started, the first container has already locked all the groups, and those groups are processed on the first node only. Note that each time a container restarts, it is assigned a new container ID, and so loses its association with the groups that were previously assigned to it.

As an example, if there are five containers, each associated with ten groups, and the containers are restarted, all 50 groups are associated with the first container to restart. The 50 groups continue to be processed by the first container even after the remaining containers start up. If all five containers restart simultaneously, the groups are still likely to be associated with only one or just a few containers.

27.2 Configuration Issues and Workarounds

This section describes configuration issue and workarounds. It includes the following topic:

27.2.1 A Null Pointer Exception Occurs When There Are No Routing Rules

In order to be a valid Mediator configuration, each Mediator component must include routing rules. If a component has no routing rules, Mediator does nothing at run-time and a null pointer exception occurs at mediator.dispatch.CaseExecutionPlan.getEffectiveExecutableCases.

27.3 Documentation Errata

There are no documentation errata for Oracle Mediator.