Monday 27 February 2012

Configure Adapter Threads in Oracle SOA 11G


I mentioned you can configure multiple threads of inbound (polling) adapters of Oracle SOA. However, the ways to configure multiple threads vary between adapters and product versions, and the information scatter cross multiple documentations.

Hence it is worth to consolidate them here. Below are how to configure Adapter threads in Oracle SOA 11G.


1. JMS Adapter

  • Property Name: adapter.jms.receive.threads
  • Configuration File: adapter binding at composite.xml

  • Documentation: http://docs.oracle.com/cd/E21764_01/core.1111/e10108/adapters.htm#BABCGCEC
  • Example:
<service name="dequeue" ui:wsdlLocation="dequeue.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/jms/textmessageusingqueues/textmessageusingqueues/dequeue%2F#wsdl.interface(Consume_Message_ptt)"/>
<binding.jca config="dequeue_jms.jca">
<property name="adapter.jms.receive.threads" type="xs:string" many="false">10</property>
</binding.jca">
</service>

2. AQ Adapter
  • Property Name: adapter.aq.dequeue.threads
  • Configuration file: composite.xml
  • Documentation: http://docs.oracle.com/cd/E21764_01/core.1111/e10108/adapters.htm#BABDEBEE
  • Example:
<service name="dequeue" ui:wsdlLocation="dequeue.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/aq/raw/raw/dequeue/#wsdl.interface(Dequeue_ptt)"/>
<binding.jca config="dequeue_aq.jca">
<property name="adapter.aq.dequeue.threads" type="xs:string" many="false">10</property>
</binding.jca>
</service>


3. MQ Adapter
  • Property Name: InboundThreadCount
  • Configuration File: *.jca file
  • Documentation: http://docs.oracle.com/cd/E21764_01/core.1111/e10108/adapters.htm#BABDEBEE

4. Database Adapter

It takes multiple steps to configure database adapter threads.

Step 1: Configure distributed polling. The query in the polling database adapter needs to be a distributed polling in order to avoid data duplication. Please follow the two best practices in the documentation to establish the right kind of distributed polling.

Step 2. Set activationInstances as adapter binding property at composite.xml (SOA 11G) to achieve multiple threads in database adapter.

Alternatively, you can set NumberOfThreads in the jca file (SOA 11.1.1.3 onward). Technically, activationInstances and NumberOfThreads properties work differently, in such that NumberOfThreads works in the scope of per activation agent. Before SOA 11.1.1.3, NumberOfThreads is NOT supported in clustered environment or when activationInstances>1. At SOA 11.1.1.3 onward, you can use either activationInstances or NumberOfThreads properties to achieve the multi-threading effect. But if for some reason you set both, the total concurrent threads will be activationInstances x NumberOfThreads. For example, if you activationInstances=2, and NumberOfThreads=5, that means there are are 5 threads running within each activation instance.


Step 3. Tune MaxTransactionSize and MaxRaiseSize to throttle the incoming messages along side with activationAgents/NumberOfThreads. These two properties are configured either through the DbAdapter wizard at JDeveloper, or manually directly at the *.jca file.

<endpoint-activation portType="poll_ptt" operation="receive">
<activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
...
<property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
<property name="MaxRaiseSize" value="5"/>
<property name="MaxTransactionSize" value="10"/>
...
</activation-spec>
</endpoint-activation>

5. File/FTP Adapter

File/FTP adapter's threading model is a bit complex. In essence, there is a separation poller thread and processor thread, except in the "Single Threaded Model" (comparatively, JMS/AQ adapters always use the same thread to poll and process). There is always only one poller thread, while there could be multiple processor threads. Please go through the documentation thoroughly so that you can choose a threading model appropriate to your application.


Step 1: Choose a threading model

Step 2: Configure threads depending on the threading model you choose

If you choose the Default Threading Model, you can set the thread count of global processor through the oracle.tip.adapter.file.numProcessorThreads property at the pc.properties file. This pc.properties is read from the classpath. So you could, for example, copy it to some directory under ORACLE_HOME and then reference it in the WLS classpath in setDomainEnv.sh. However, the Partition Threading Model is recommended over the Default Threading Model (see below) if you do have a need to define processor threads.

If you choose the Single Threaded Model, set the SingleThreadModel=true at the *.jca file. And as the name applies, you don't worry about any thread counts.
<activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
<property../>
<property name="SingleThreadModel" value="true"/>
<property../>
</activation-spec>

If you choose the Partitioned Threaded Model, you can set the thread count for processor threads per adapter at the *.jca file:
<activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
<property../>
<property name="ThreadCount" value="4"/>
<property../>
</activation-spec>


Please note the value of the ThreadCount is closely related to the kind of threading model you choose:
  • If the ThreadCount property is set to 0, then the threading behavior is like that of the single threaded model.
  • If the ThreadCount property is set to -1, then the global thread pool is used, as in the default threading model.
  • The maximum value for the ThreadCount property is 40.

How to find out number of BPEL instances in SOA 11g dehydration store?

A common task for fusion admins would be to find out the number of BPEL instances in the SOA dehydration store,the SOA database. Basically this information is stored in a table called COMPOSITE_INSTANCE and the owner of the table id DEV_SOAINFRA schema.

There are two major ways of doing it:

1. From EM Console

For finding out the instance count from EM console:

a. Login to the SOA 11g EM console and expand the SOA folder on your left.This is shown below. Click on the soa-infra


b. On the right hand side of the screen click on Number of Instances as shown below:


c. The number of instances is displayed as shown below:





2. Select query on SOA dehydration table

 For finding out the number of BPEL instances in your SOA 11g Dehydration using SQL query follow  below steps:

a. Login to the SOA 11g Database using a SQL Client as DEV_SOAINFRA user.(Check out if your prefix ie DEV here is different)

b. Issue below command:

select count(*) from COMPOSITE_INSTANCE;

That would give you the number of instance present in the SOA dehydration store :)

Number of Instances for a specific Composite:


What if you wanted to find the number of instance for each composite,well use the below query

select count(*) from composite_instance where source_name='Composite Name'

ORACLE Soa Suite ERRORS List (ORAMED)


ORAMED-01001: Error occurred while assigning to target "{0}" using expression "{1}".
Cause: Error occurred while assigning to target "{0}" using expression "{1}".
Action: Check if source message has right values or source expression is valid. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01002: Metadata error occurred while assigning. Check if source and target expression are valid. ["{0}"].
Cause: Metadata error occurred while assigning. Check if source and target expression are valid. ["{0}"].
Action: Modify source or target for valid expression. Empty string, null and invalid epxressions are not allowed Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01003: Invalid source used while assigning. Check if source expression is valid. ["{0}"].
Cause: Invalid source used while assigning. Check if source expression is valid. ["{0}"].
Action: Modify source for valid expression. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01004: Source expression "{0}" resulted in multiple node for source message which is not supported.
Cause: Source expression "{0}" resulted in multiple node for source message which is not supported.
Action: Check the expression for correctness. Modify the source expression based on the requirement, or contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01005: Target creation for target expression "{0}" failed.
Cause: Target creation for target expression "{0}" failed.
Action: Check if the target expression is valid, otherwise, contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01006: Encountered variable which is not supported or implemented "{0}".
Cause: Encountered variable which is not supported or implemented "{0}".
Action: Check if source and target expression for valid variable like $in, $out, $initial and so forth, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01007: Header variable "{0}" not recognized.
Cause: Header variable "{0}" not recognized.
Action: Header variable should be of the format $in.header.<prefix>_<root-elem>. Fix the header variable. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01008: Property "{0}" not found in "{1}" message.
Cause: Property "{0}" not found in "{1}" message.
Action: Check source and target expression for valid property name otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01009: Failed to assign element "{0}" to element "{1}". Parent node not found.
Cause: Failed to assign element "{0}" to element "{1}". Parent node not found.
Action: Check target expression for valid element associated with proper owner document, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01010: Failed to assign source "{0}" to target part "{1}". Assigning Text data to part is not supported unless target part is available.
Cause: Failed to assign source "{0}" to target part "{1}". Assigning Text data to part is not supported unless target part is available.
Action: Check source and target expression for valid expression, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01011: Failed to assign attachment "{0}" from source to target. Attachment not available in source message.
Cause: Failed to assign attachment "{0}" from source to target. Attachment not available in source message.
Action: Check source expression is valid, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01101: Error evaluating filter expression.
Cause: Error evaluating filter expression.
Action: Ensure that the filter expression is valid, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01102: Error evaluating filter expression, "{0}".
Cause: Error evaluating filter expression, "{0}".
Action: Ensure that the filter expression metadata is valid, otherwise Contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01201: Error occurred while transforming payload using "{0}" for target part "{1}".
Cause: Error occurred while transforming payload using "{0}" for target part "{1}".
Action: Review the XSL or source payload. Either the XSL defined does not match with the payload or payload is invalid. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01202: Fatal error occurred while transforming payload using XSL "{0}" for target part "{1}".
Cause: Fatal error occurred while transforming payload using XSL "{0}" for target part "{1}".
Action: Review the XSL for any syntax error. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01203: No part exists with name "{0}" in source message.
Cause: No part exists with name "{0}" in source message.
Action: Review the transformation definition in mplan. Contact Oracle Support Services if the error cannot be fixed. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01204: Initial source message is not available in the context. Failed evaluating "{0}".
Cause: Initial source message is not available in the context. Failed evaluating "{0}".
Action: Review the transformation/assign definition in mplan. Accessing initial source message is not supported during callback. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01301: Schematron validation fails with error "{0}".
Cause: Schematron validation fails with error "{0}".
Action: Fix the payload. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01302: Response payload for operation "{0}" is invalid.
Cause: Response payload for operation "{0}" is invalid.
Action: Response received by Mediator was either invalid or null. Examine why the service being invoked by Mediator is returning a null/invalid response. You can also try invoking the service directly and see if it sends back proper response. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01303: XSD schema validation fails with error "{0}".
Cause: XSD schema validation fails with error "{0}".
Action: Fix payload and resubmit. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01304: Schematron validation failure.
Cause: Schematron validation failure.
Action: Fix payload or schematron definition and resubmit. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01305: Group ID validation failure.
Cause: Group ID validation failure.
Action: XPATH Expression returned null Group Id. Check the XPATH expression, fix the payload and resubmit. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01306: Sequence ID validation failure."{0}".
Cause: Sequence ID validation failure."{0}".
Action: SequenceID value is incorrect. Either XPATh Expression returned null or sequenceID value does not fall within the sequence range. Check the XPATH expression, fix the payload and resubmit. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01351: Unable to execute "{0}" method on callout instance of "{1}".
Cause: Unable to execute "{0}" method on callout instance of "{1}".
Action: Check server log for any exceptions. Check if there is an issue in implementation of Java callout class. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01360: Wrong source message type. Neither a NormalizedMessage nor a BusinessEvent, message type class :{1}
Cause: Wrong source message type. Neither a NormalizedMessage nor a BusinessEvent, message type class :{1}
Action: Contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01361: Mediator does not support the Resequencing strategy."{0}"
Cause: Mediator does not support the Resequencing strategy."{0}"
Action: Mediator does not support the Resequencing strategy. Refer to the documentation of resequencer for more details.You can also contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01362: Unexpected runtime error occurred while processing the message.
Cause: Unexpected runtime error occurred while processing the message.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-01363: Mediator does not have content to respond to the request-response type operation operation "{0}".
Cause: Mediator does not have content to respond to the request-response type operation operation "{0}".
Action: Examine your design to rectify, or reset the property oracle.soa.mediator.twoway.allowNullReply to true. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02001: This error occurs because of invalid filter expression "{0}".
Cause: This error occurs because of invalid filter expression "{0}".
Action: Review the filter expression and check for possible syntax errors in the filter expression. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02002: Invalid filter metadata "{0}". Either no filter expression specified or expression may be invalid.
Cause: Invalid filter metadata "{0}". Either no filter expression specified or expression may be invalid.
Action: Fix the filter condition metadata. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02051: Invalid callout implementation "{0}".
Cause: Invalid callout implementation "{0}".
Action: Fix the callout implementation. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02101: Cannot load XSL transform into the cache for XSL or XSLT "{0}".
Cause: Cannot load XSL transform into the cache for XSL or XSLT "{0}".
Action: Check XSL file for any syntax error and fix the same. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02102: Invalid part type "{0}".
Cause: Invalid part type "{0}".
Action: Ensure that the parts provided in transformation/xpath are valid. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02103: Invalid assign expression "{0}".
Cause: Invalid assign expression "{0}".
Action: Check assign xpath expression for any syntax error. If there are any syntax errors, correct the xpath expression. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02201: Could not load schema document into the cache for XSD "{0}". Reason : {1}
Cause: Could not load schema document into the cache for XSD "{0}". Reason : {1}
Action: Check the XSD schema for any syntax error and fix the same. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02202: Invalid part name in metadata for schematron validator "{0}".
Cause: Invalid part name in metadata for schematron validator "{0}".
Action: Fix the schematron metadata. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02203: Could not load schematron file {0}.
Cause: Could not load schematron file {0}.
Action: Provide the correct schematron document. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02204: Could not load wsdl interface for message with component dn "{0}".
Cause: Could not load wsdl interface for message with component dn "{0}".
Action: Fix the component to point to valid wsdl. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02205: Schematron document for schematron file {0} is invalid.
Cause: Schematron document for schematron file {0} is invalid.
Action: Fix the schematron document. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02206: Could not create XSD validator for schema with target namespace "{0}" for message "{1}".
Cause: Could not create XSD validator for schema with target namespace "{0}" for message "{1}".
Action: Check XML schema for any syntax error. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02301: Could not load mediator mplan information. Reason : {0}
Cause: Could not load mediator mplan information. Reason : {0}
Action: Check your mediator mplan for any syntax error. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02302: Could not load metadata manager. Reason : {0}.
Cause: Could not load metadata manager. Reason : {0}.
Action: Check your composite configuration. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02303: Composite reference {0} not found for operation {1}.
Cause: Composite reference {0} not found for operation {1}.
Action: Check your composite. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02304: Could not load mediator mplan for componentDN "{0}" . It may be undeployed.
Cause: Could not load mediator mplan for componentDN "{0}" . It may be undeployed.
Action: Using SOA Enterprise Manager, check if composite is deployed. If the composite is not deployed, you can try deploying the composite again. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02305: Could not find mediator case for case name "{0}" . Mediator component may be redeployed with different case names.
Cause: Could not find mediator case for case name "{0}" . Mediator component may be redeployed with different case names.
Action: This message will be put in error state. Fix the mplan by adding the right case and then recover it through EM. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02306: Encountered message "{0}" containing streaming attachment for mediator with one or more parallel case. Message will not be processed and if available any other mediator cases will be ignored.
Cause: Encountered message "{0}" containing streaming attachment for mediator with one or more parallel case. Message will not be processed and if available any other mediator cases will be ignored.
Action: This message will be errored out. Mediator with one or more parallel case for streaming attachment is not supported. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02307: Encountered message "{0}" containing streaming attachment for mediator with resequencer enabled. Message will not be processed.
Cause: Encountered message "{0}" containing streaming attachment for mediator with resequencer enabled. Message will not be processed.
Action: This message will be errored out. Mediator with resequencer type case for streaming attachment is not supported. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02401: Got invalid response from decision service : {0}
Cause: Got invalid response from decision service : {0}
Action: Ensure that the decision service used by the mediator is configured properly. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02402: Could not invoke decision service : {0}
Cause: Could not invoke decision service : {0}
Action: Ensure that the decision service used by the mediator is configured properly. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-02403: Dynamic mplan returned by decision service is invalid. Mplan returned by decision service : {0}
Cause: Dynamic mplan returned by decision service is invalid. Mplan returned by decision service : {0}
Action: Ensure that the decision service used by the mediator is configured properly. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03001: Unable to lock Resequencer Groups for container ID "{0}" and timestamp "{1}".
Cause: Unable to lock Resequencer Groups for container ID "{0}" and timestamp "{1}".
Action: Unable to lock Resequencer Groups. Check your database connection. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03002: Unable to retrieve locked Resequencer Groups for containerId "{0}" and timestamp "{1}".
Cause: Unable to retrieve locked Resequencer Groups for containerId "{0}" and timestamp "{1}".
Action: Unable to retrieve lock Resequencer Groups. Check your database connection. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03003: Unable to store Resequencer Group."{0}".
Cause: Unable to store Resequencer Group."{0}".
Action: Unable to store Resequencer Group. Check your database connection or check data. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03004: Unable to store Resequencer Message."{0}"
Cause: Unable to store Resequencer Message."{0}"
Action: Unable to store Resequencer Message. Check your database connection or check data. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03005: Unable to unlock Resequencer Groups for container ID "{0}" and timestamp "{1}".
Cause: Unable to unlock Resequencer Groups for container ID "{0}" and timestamp "{1}".
Action: Unable to unlock Resequencer Groups. Check your database connection. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03006: Unable to retrieve Resequencer message. "{0}"
Cause: Unable to retrieve Resequencer message. "{0}"
Action: Unable to retrieve Resequencer message. Check your database connection. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03101: Unable to get subscriptions for message "{0}"
Cause: Unable to get subscriptions for message "{0}"
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03102: Error creating cache for cache policy "{0}". Reason : {1}
Cause: Error creating cache for cache policy "{0}". Reason : {1}
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03103: Cannot load Cache entry with NULL or EMPTY key.
Cause: Cannot load Cache entry with NULL or EMPTY key.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03104: Do not cache RuntimeESBSystem object for NULL or EMPTY system GUID.
Cause: Do not cache RuntimeESBSystem object for NULL or EMPTY system GUID.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03105: Could not read WSDL Definition for WSDL with NULL or EMPTY file name.
Cause: Could not read WSDL Definition for WSDL with NULL or EMPTY file name.
Action: The WSDL file being read is not available or reachable. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03106: Do not cache WSDL Definition for NULL or EMPTY WSDL file name.
Cause: Do not cache WSDL Definition for NULL or EMPTY WSDL file name.
Action: The WSDL file being read is not available or reachable. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03107: Could not read Schema Document for XSD with NULL or EMPTY file name.
Cause: Could not read Schema Document for XSD with NULL or EMPTY file name.
Action: The XSD schema file being read is not available or reachable. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03108: Do not cache Schema Document for NULL or EMPTY XSD file name.
Cause: Do not cache Schema Document for NULL or EMPTY XSD file name.
Action: The XSD schema file being read is not available or reachable. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03109: Could not read parsed filter expression for NULL or EMPTY expression.
Cause: Could not read parsed filter expression for NULL or EMPTY expression.
Action: The filter expression is null or empty. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03110: Information to process an incoming callback message is not available.
Cause: Information to process an incoming callback message is not available.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03201: Retry of deferred message failed.
Cause: Retry of deferred message failed.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03202: Retry of callback message failed.
Cause: Retry of callback message failed.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03203: Retry of timeout message failed.
Cause: Retry of timeout message failed.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03301: Unexpected exception in case execution "{0}".
Cause: Unexpected exception in case execution "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03302: Unexpected exception in one-way operation "{0}" on reference "{1}".
Cause: Unexpected exception in one-way operation "{0}" on reference "{1}".
Action: Check whether the reference service is properly configured and running or look at exception for analyzing the reason or contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03303: Unexpected exception in request response operation "{0}" on reference "{1}".
Cause: Unexpected exception in request response operation "{0}" on reference "{1}".
Action: Check whether the reference service is properly configured and running or look at exception for analyzing the reason or contact Oracle Support Services. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03304: Unexpected exception in asynchronized request execution "{0}".
Cause: Unexpected exception in asynchronized request execution "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03401: Context lookup failed "{0}".
Cause: Context lookup failed "{0}".
Action: Ensure that the topic is mapped to a JNDI tree. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03402: Error creating "{0}".
Cause: Error creating "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03403: Subscriber does not exist for system "{0}".
Cause: Subscriber does not exist for system "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03405: Error converting field "{0}".
Cause: Error converting field "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03406: Publisher does not exist for system "{0}".
Cause: Publisher does not exist for system "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03408: Unable to store deferred message "{0}".
Cause: Unable to store deferred message "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03409: Invalid, premature, or already-handled callback message. No correlation found for message with conversation ID "{0}".
Cause: Invalid, premature, or already-handled callback message. No correlation found for message with conversation ID "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03501: Unable to start transaction; transaction status is "{0}".
Cause: Unable to start transaction; transaction status is "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03502: Unable to resume transaction.
Cause: Unable to resume transaction.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03503: Unable to commit transaction. Transaction has been rolled back.
Cause: Unable to commit transaction. Transaction has been rolled back.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03504: Unable to rollback transaction.
Cause: Unable to rollback transaction.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03505: "{0}" object not found in JNDI tree.
Cause: "{0}" object not found in JNDI tree.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03506: Unable to get transaction status.
Cause: Unable to get transaction status.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03507: Unable to set rollback only for transaction; transaction status is "{0}".
Cause: Unable to set rollback only for transaction; transaction status is "{0}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03508: One of the routing rule execution resulted in a transaction rollback.
Cause: One of the routing rule execution resulted in a transaction rollback.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03509: Unable to suspend transaction.
Cause: Unable to suspend transaction.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03510: Error obtaining Transaction Manager.
Cause: Error obtaining Transaction Manager.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03511: "{0}" object not found in jndi tree
Cause: "{0}" object not found in jndi tree
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03601: Unable to create transformer. It could be because of transformation file or configuration issues. Reason : "{0}"
Cause: Unable to create transformer. It could be because of transformation file or configuration issues. Reason : "{0}"
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03602: Unable to create document.
Cause: Unable to create document.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03603: Unable to register base function "{0}" for "{1}".
Cause: Unable to register base function "{0}" for "{1}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03651: Unable to create callout instance for "{0}".
Cause: Unable to create callout instance for "{0}".
Action: Ensure that your callout configuration is correct. Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03652: Unable to execute "{0}" method on callout instance of "{1}".
Cause: Unable to execute "{0}" method on callout instance of "{1}".
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03701: Unable to configure xpath transformer.
Cause: Unable to configure xpath transformer.
Action: Check log file for any exceptions to fix the configuration otherwise contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03801: Unable to initialize filter/validator. "{0}" is not supported.
Cause: Unable to initialize filter/validator. "{0}" is not supported.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03802: Unable to create initial context.
Cause: Unable to create initial context.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-03803: Unable to initialize Container ID Manager.
Cause: Unable to initialize Container ID Manager.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-04001: Error executing service due to server down "{0}". Reason : {1}
Cause: Error executing service due to server down "{0}". Reason : {1}
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-04002: Error executing service due to server down "{0}". Reason : {1}
Cause: Error executing service due to server down "{0}". Reason : {1}
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-04004: Error persiting resequencer message,"{0}" , due to internal Error.. Reason : {1}
Cause: Error persiting resequencer message,"{0}" , due to internal Error.. Reason : {1}
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-04101: Error receiving DB message.
Cause: Error receiving DB message.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-04102: Error publishing DB message.
Cause: Error publishing DB message.
Action: Check log file for any exceptions and contact Oracle Support Services for further help. Level: 1 Type: ERROR Impact: Programmatic

ORAMED-09001: Parameter name contains "{0}" qname "{1}".
Cause: Parameter name contains "{0}" qname "{1}".
Action: Verify Name-Value parameters to be of the form 'name1=value1 name2=value2' with value not having any spaces. Level: 1 Type: ERROR Impact: Programmatic






Mediator ERROR Hosp...

One of the powerful features in Oracle SOA Suite is out-of-the-box Error Hospital. In order to use this feature, MEDIATOR component should have parallel routing rules. Each parallel routing starts a new transaction and can be independently controlled through EM console.
Please refer to Human Workflow Example to understand this lesson better.
MyBay synchronizes its items with MyDel’s datastore at frequent intervals. MyDel expects items from all received Orders to be present in its datastore before further processing. However, due to synchronization issues, sometimes MyBay order items are not found in MyDel’s datastore. In such cases, instead of discarding the entire batch of orders, MyDel needs to selectively retry failed orders after rectifying the issues.
In the present lesson, lets see how Error Hospital can come to rescue. We will first run Human Workflow Example with incorrect values and see how transaction fails. Then, we will  make slight change to the Mediator to see how the failed transaction can be retried.
Lets create an entry in Orders.txt file with an item that doesn’t exist in ITEMS table. In my case, ITEMS table contains two items with IDs 1 and 2.
orafmwschool_hwflow82
Lets create an order entry in Order.txt with ItemId 3.
orafmwschool_hwflow81
When Order.txt is placed in file poller directory, as expected, transaction fails.
orafmwschool_hwflow83
Click on Instance ID to go to process Flow Trace. We can see the transaction has failed because of Foreign Constraint violation.
orafmwschool_hwflow84
We can’t retry this transaction. Lets slightly modify Order Router mediator to change this behaviour.
Open OrderRouter from composite.xml and go to Routing Rules section. Observe the both routing rules we defined earlier are “sequential” type. Change them to “parallel”. Click OK for any information dialogs you get in the process.
orafmwschool_hwflow79
orafmwschool_hwflow85
Redeploy the composite and copy same Order.txt file to the poller directory. Go the EM Dashboard and see deployed process instance. We can that it is in “Recovery Needed” state.
orafmwschool_hwflow87
We can see the process instance is in “Recovery Needed” state instead of “Faulted”. Click on “Recover …” link at the bottom of the page as shown above.
orafmwschool_hwflow88
Fault Trace shows the details of recoverable error. Click on error message to see error details. Below error message, we can see editable payload with an option to either Retry or Abort the transaction.
orafmwschool_hwflow89
Change Item ID to 1 and Retry the transaction.
orafmwschool_hwflow91
Go back to the Process Dashboard and click on Instance ID again to go to Flow Trace. We can see the transaction is successfully completed.
orafmwschool_hwflow92
Though it solves bulk of our requirements, we may still want to refine fault handling by fault category. We also may want to extend fault handling to BPEL processes. In such cases, we can make use of Fault Management Framework.