Detection of Resource Failure

The detection of Resource Failure Handling has the following steps:
  1. Detecting the failure of Database or EMS: A thread is configured, which checks the status of these resources at a predefined interval and sends the reports to a repository with the latest status. The repository can be accessed from other components and it can take the respective action. A timeout is configured when checking the status of the resources, and if a response is not received within the timeout period the failure of the particular resource is reported. The concerned thread also checks if any batch processor thread is in an error state. The properties or configuration used for failure detection is described in Configuration of Resource Failure Handling.

    The Fulfillment Order Management application runs another thread, which keeps looking at the repository data that is updated by failure detection thread, and identifies the resource failure when the status changes in the repository data.

  2. Using Spring Interceptor: All the exceptions thrown from the package com.tibco.aff.oms.server are intercepted by a class LogException.java that analyzes the thrown exception and identifies if the exceptions are thrown due to a resource failure. When intercepting the exception, if a resource failure issue is identified, an appropriate action on resource failure is taken. See Action on Resource Failure and Action on Resource Recovery for more details.
  3. JMS exception handler: A JMS exception handler is registered to identify exception handling. Once an exception is detected by the exception handler the application verifies the JMS failure, and if a failure is found, an appropriate action is taken.
  4. Intercepting the exception thrown while sending the JMS message: The Orchestrator uses ResourceRouterImpl.dispatchMessage() method to send any JMS messages. If an exception occurs when sending a message then the exception is sent to the HealthCheck thread and the resources are verified for resource failure.