@Asynchronous
is only suitable if an external transaction needs to start several parts of the work in parallel, and then wait for them all (or start one part of the work in the background, do some work in the foreground, and then wait in the background). @Asynchronous
not suitable for transactional "fire and forgetting" because the container may fall before the asynchronous operation starts to execute (in my opinion, void EJB arithmetic methods are very rarely useful, perhaps for something like updating the cache in memory) , If you want to guarantee that the work will be performed asynchronously, without waiting for its completion, then you must send a message to MDB or schedule an EJB timer.
source share