Ich verwende Oracle 11g für meine Datenbank und die Oracle Streams AQ-Funktion als JMS-Implementierung.Gemeinsame Nutzung von JMS- und Hibernate-Transaktionen in einem Spring MDB mit Oracle Streams AQ?
Nach allem, was ich weiß, sollte es möglich sein, eine Spring-basierte Message-driven POJO (MDP) zu implementieren, die die gleiche Datenquelle für den transaktionalen Datenzugriff und JMS-Transaktionen verwendet - alle ohne XA-Transaktionen (IIRC, dies) wurde als Feature von SpringSource Advanced Pack für Oracle vermarktet.
Ist dies auch mit Hibernate möglich? Im Idealfall würde mein MDP eine JMS-Transaktion starten und eine Nachricht aus einer Warteschlange lesen und dann die Transaktion für den Datenzugriff über Hibernate wiederverwenden. Wenn etwas schief geht, wird die JMS- und Datenbanktransaktion ohne Verwendung von 2-Phasen-Commit (2PC) zurückgesetzt.
Ich bin nicht viel von einem Transaktion Guru, also bevor ich anfangen tiefer zu graben, kann jemand bestätigen, dass dies möglich ist und auch Sinn macht?
Update:
Was ich will, ist eine Implementierung des Shared Transaction Resource pattern. Die sample code demonstriert es für ActiveMQ und JDBC, aber ich muss Oracle Streams AQ und Hibernate verwenden.
Update2: Das Spring Advanced Pack für Oracle hat open sourced als Teil des Spring Data JDBC gewesen und es „bietet die Möglichkeit, einen einzelnen lokalen Transaktions-Manager sowohl für den Zugriff Datenbank und die Nachricht verwenden, ohne 2 bis teuer verteilt greifen -phase commit Transaktionsverwaltung ".
+1. Ich frage mich jedoch, "alles ohne XA-Transaktionen (IIRC, wurde dies als eine Funktion von SpringSource Advanced Pack für Oracle vermarktet") Aussage. Ich bin ziemlich positiv, dass jede Transaktion, die sich über mehrere Knoten (z. B. JMS und DA) erstreckt, XA-Transaktion sein muss und 2PC verwenden muss - während dies normalerweise durch Container hinter der Szene geschieht, ist es dennoch getan. Liege ich falsch? Gibt es eine neue erstaunliche Technologie, die das irgendwie überflüssig macht? – ChssPly76
Danke für Ihre Kommentare. Ich habe meine Frage aktualisiert, nachdem ich etwas tiefer gegraben habe. Wie in dem Artikel beschrieben, den ich verlinkt habe, möchte ich JTA und XA insgesamt vermeiden. Die Dokumentation für [SpringSource Advanced Pack für Oracle] (https://www.springsource.com/products/enterprise/oraclepack) (herunterladen [hier] (http://www.springsource.com/downloads/springsource-advanced-pack -for-oracle-database-download)) erwähnen Sie auch diese Passibilität (siehe den letzten Abschnitt von Kapitel 3.2, der hier leider zu lang ist). –
Es gibt keine Möglichkeit, TX-Koordination über Datenquellen und JMS ohne JTA zu bekommen. – skaffman