Interface RecoverableXAResource


@ConsumerType public interface RecoverableXAResource
A RecoverableXAResource service may be provided by a ResourceProvider if they are able to support XA recovery operations. There are two main sorts of recovery:
  • Recovery after a remote failure, where the local transaction manager runs throughout
  • Recovery after a local failure, where the transaction manager replays in-doubt transactions from its log
This service is used in both of these cases. The identifier returned by getId() provides a persistent name that can be used to correlate usage of the resource both before and after failure. This identifier must also be passed to TransactionContext.registerXAResource(XAResource, String) each time the recoverable resource is used.
  • Field Details

  • Method Details

    • getId

      String getId()
      Get the id of this resource. This should be unique, and persist between restarts
      Returns:
      an identifier, never null
    • getXAResource

      XAResource getXAResource() throws Exception
      Get a new, valid XAResource that can be used in recovery This XAResource will be returned later using the releaseXAResource(XAResource) method
      Returns:
      a valid, connected, XAResource
      Throws:
      Exception - If it is not possible to acquire a valid XAResource at the current time, for example if the database is temporarily unavailable.
    • releaseXAResource

      void releaseXAResource(XAResource xaRes)
      Release the XAResource that has been used for recovery
      Parameters:
      xaRes - An XAResource previously returned by getXAResource()