Utilizzo Oracle 11g per il mio database e la funzionalità AQ di Oracle Streams come implementazione JMS.Condivisione delle transazioni JMS e Hibernate in un MDB Spring utilizzando gli stream Oracle AQ?
Per quanto ne so, dovrebbe essere possibile implementare un POJO basato su messaggio Spring (MDP) che utilizza la stessa origine dati per l'accesso ai dati transazionali e le transazioni JMS - tutto senza XA-Transactions (IIRC, questo è stato commercializzato come funzionalità di SpringSource Advanced Pack per Oracle).
È possibile utilizzare anche Ibernazione? Idealmente, il mio MDP dovrebbe avviare una transazione JMS e leggere un messaggio da una coda, quindi riutilizzare la transazione per l'accesso ai dati tramite Hibernate. Se qualcosa va storto, la transazione JMS e il database verrebbero entrambi ripristinati, senza utilizzare il commit a 2 fasi (2PC).
Non sono un guru della transazione, quindi prima di iniziare a scavare più a fondo, qualcuno può confermare che ciò è possibile e ha senso anche?
Aggiornamento:
Quello che voglio è un'implementazione del Shared Transaction Resource pattern. Lo sample code lo dimostra per ActiveMQ e JDBC, ma ho bisogno di utilizzare gli stream Oracle AQ e Hibernate.
Update2: L'Advanced Pack SpringSource per Oracle è stato open sourced come parte della primavera dati JDBC e "fornisce la possibilità di utilizzare un unico gestore delle transazioni locale sia per database e un messaggio di accesso senza ricorrere a costosi distribuito 2 -phase commit gestione delle transazioni ".
+1. Mi chiedo tuttavia "tutto senza XA-Transactions (IIRC, questo è stato commercializzato come funzionalità di SpringSource Advanced Pack per Oracle)". Sono abbastanza sicuro che qualsiasi transazione che si estende su più nodi (ad esempio JMS e DA) deve essere una transazione XA e deve usare 2PC - mentre di solito viene eseguita da un container dietro la scena, è comunque fatta. Ho sbagliato? C'è qualche nuova straordinaria tecnologia che in qualche modo rende inutile? – ChssPly76
Grazie per i vostri commenti. Ho aggiornato la mia domanda dopo aver scavato un po 'più a fondo. Come descritto nell'articolo a cui mi sono collegato, vorrei evitare del tutto JTA e XA. I documenti per [SpringSource Advanced Pack per Oracle] (https://www.springsource.com/products/enterprise/oraclepack) (scarica [qui] (http://www.springsource.com/downloads/springsource-advanced-pack -for-oracle-database-download)) menzionano anche la passibilità (vedi l'ultimo paragrafo del capitolo 3.2, che è troppo lungo per essere citato qui, sfortunatamente). –
Non è possibile ottenere il coordinamento tx su origini dati e JMS senza JTA. – skaffman