Ich habe ein Softwareprojekt in IBM Websphere 8.5.5 ausgeführt. Es muss den JTA TransactionManager vom Anwendungsserver suchen. Derzeit verwendet es die Klasse com.ibm.ws.Transaction.TransactionManagerFactory
und ruft dann getTransactionManager()
auf.Verwenden von com.ibm.ws.Transaction.TransactionManagerFactory in Websphere 8.5
Meine Frage ist: Ist es legitim, dies in IBM Websphere 8.5 zu tun? Es scheint, dass es neuere Schnittstellen gibt (z. B. UOWManager
). Ich habe jedoch keine Dokumentation über die Verwendung von com.ibm.ws.Transaction.TransactionManagerFactory
über Websphere 5 hinaus gefunden. Es sagt nirgendwo, dass es verwendet werden kann. Es sagt nirgendwo, dass es auch nicht verwendet werden sollte.
Funktioniert com.ibm.ws.Transaction.TransactionManagerFactory
immer noch, wenn auch altmodisch? Oder ist es problematisch und sollte nicht verwendet werden?
(Ich habe nicht den Code gesehen nicht so weit, aber dies könnte bedeuten, entweder a) es funktioniert, oder b) wir getroffen haben einfach nicht die richtigen Testfälle!)
Wir hatten das gleiche Problem, als wir versuchten, den 2nd-Level-Cache Hibernate + Infinispan auf WebSphere zu verwenden. In einigen Szenarien wollte Infinispan die Transaktion aussetzen, eigene Arbeit machen und dann wieder aufnehmen. Der einzige "javax.transaction.TransactionManager", in den wir uns (mit direkten Suspend/Resume-APIs) einklinken konnten, war der von 'com.ibm.ws.Transaction.TransactionManagerFactory' zurückgegebene. Wie kann Suspend/Resume mit den unterstützten APIs von WebSphere durchgeführt werden? –
@KosProv Beliebiges Aussetzen/Fortsetzen kann nicht durchgeführt werden. Sie können 'UOWManager.runUnderUOW' verwenden, wodurch das Suspend/Resume in Ihrem Auftrag in einer kontrollierten Weise ausgeführt wird. Effektiv möchte das Produkt nicht zulassen, dass der Anwendungscode die Transaktion nicht fortsetzen kann oder versuchen wird, die Transaktion in einem anderen EE-Bereich fortzusetzen (z. B. während eines EJB-Aufrufs auszusetzen und nach der Rückkehr fortzusetzen oder die Transaktion fortzusetzen) ein anderer Thread). –
@Alasdair Vielen Dank für Ihre Antwort. Ich wollte die Frage nicht komplizierter machen, indem ich genauer auf den Anwendungsfall eingehe, da die Details nicht wichtig sind. Ich habe überprüft, was meine Optionen sind, da der Wechsel zu 'UOWManager' nicht trivial ist. (Zumal Teile des Codes außerhalb meiner Kontrolle liegen, d. H. In Bibliotheks-Jars.) –