Class AsyncResponseTransaction

  • All Implemented Interfaces:
    KeycloakTransaction

    public class AsyncResponseTransaction
    extends Object
    implements KeycloakTransaction
    When using AsyncResponse.resume(Object) directly in the code, the response is returned before all changes done withing this execution are committed. Therefore we need some mechanism that resumes the AsyncResponse after all changes are successfully committed. This can be achieved by enlisting an instance of AsyncResponseTransaction into the main transaction using KeycloakTransactionManager.enlistAfterCompletion(KeycloakTransaction).
    • Method Detail

      • finishAsyncResponseInTransaction

        public static void finishAsyncResponseInTransaction​(KeycloakSession session,
                                                            javax.ws.rs.container.AsyncResponse responseToFinishInTransaction,
                                                            javax.ws.rs.core.Response responseToSend)
        This method creates a new AsyncResponseTransaction instance that resumes provided AsyncResponse responseToFinishInTransaction with given Response responseToSend. The transaction is enlisted to KeycloakTransactionManager.
        Parameters:
        session - Current KeycloakSession
        responseToFinishInTransaction - AsyncResponse to be resumed on KeycloakTransactionManager commit/rollback.
        responseToSend - Response to be sent