/** * Notifies local transaction context that server is suspended, and only completes suspension if * there are no active invocations nor transactions. * * @param listener callback listener */ @Override public void suspended(ServerActivityCallback listener) { this.suspended = true; listenerUpdater.set(this, listener); localTransactionContextInjectedValue.getValue().suspendRequests(); final int activeInvocationCount = activeInvocationCountUpdater.get(this); if (activeInvocationCount == 0) { if (gracefulTxnShutdown) { if (activeTransactionCountUpdater.get(this) == 0) { this.doneSuspended(); } else { EjbLogger.ROOT_LOGGER.suspensionWaitingActiveTransactions(activeInvocationCount); } } else { this.doneSuspended(); } } }