Sto lavorando su un'applicazione standalone che utilizza sia JMS che Hibernate.Sincronizzazione molla Operazioni Hibernate e JMS
La documentazione suggerisce che JTA deve essere utilizzato se voglio avere transazioni su entrambe le risorse.
Tuttavia, al momento con un metodo DAO annotato @Transaction (e HibernateTransactionManager), questo sembra già funzionare. Quando chiamo send() su JmsTemplate, il messaggio non viene inviato immediatamente, ma la sessione JMS viene impegnata con la sessione di Hibernate al ritorno del metodo.
Non sapevo come fosse possibile senza JtaTransactionManager, quindi ho controllato il codice sorgente. Risulta che sia il wrapper per Hibernate che JmsTemplate registra le sessioni con TransactionSynchronizationManager e la sessione JMS verrà impegnata quando si esegue la sessione di Hibernate.
Qual è il diverso tra questa e una transazione JTA. Posso usare questo per sostituire il secondo ??
Hai controllato cosa succede quando uno di loro fallisce? Entrambi rollback? –