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.
    • Method Detail

      • getId

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

        javax.transaction.xa.XAResource getXAResource()
                                               throws java.lang.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:
        java.lang.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​(javax.transaction.xa.XAResource xaRes)
        Release the XAResource that has been used for recovery
        Parameters:
        xaRes - An XAResource previously returned by getXAResource()