Saturday, September 17, 2011

Finding and resubmitting "rejected" messages in SOA Suite 11g

Problem:

You navigate to an instance that has faulted.

From the screenshot below, it is a system fault which is unclear. There appears to have been an issue while consuming a message from the JMS queue.

There is no way to resubmit this. Even though our fault policy is configured to retry, it did not. And our audit level is set to 'production', so we don't have the payload to manually resubmit.

What do you do?
Before proceeding, make note of the last update time of the composite instance, as shown above.


Solution:

1. Navigate to your composite.

2. Click on the "Faults and Rejected Messages" tab.

3. Scroll down and find the same timestamp of the instance.

4. Immediately above it, you will notice another faulted instance with a Composite Instance ID of "Unavailable". You will also notice that a checkmark in the "Rejected Message" column is available.

 5. On the screenshot above, click on the actual "Error Message" on the leftmost column.

6. A popup window comes up. Click on "Show payload...".

7. Copy the payload (which does not include the SOAP headers).

8. Now that you have the payload, navigate to the composite and click on "Test". Then insert the payload above in between the SOAP body as shown.

That's it!

Please note that in SOA Suite 11g, there is a difference between "recoverable" messages and "rejected" messages. I'll post the difference later on.

Applicable Versions:
  • Oracle SOA Suite 11g (11.1.1.x)

Ahmed Aboulnaga

No comments: