From 58c5f01e2b05ec4a51368e4315973a26df393a90 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 19 Jun 2017 22:28:15 +1200 Subject: [PATCH] #1042 - JtaTransaction is TenantMode.DB aware --- .../server/transaction/JtaTransactionManager.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java b/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java index c4712d6cc..ca27383af 100644 --- a/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java +++ b/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java @@ -28,11 +28,6 @@ public class JtaTransactionManager implements ExternalTransactionManager { private static final String EBEAN_TXN_RESOURCE = "EBEAN_TXN_RESOURCE"; - /** - * The data source. - */ - private DataSource dataSource; - /** * The Ebean transaction manager. */ @@ -59,10 +54,16 @@ public class JtaTransactionManager implements ExternalTransactionManager { // the public API and hence the Object type and casting here this.transactionManager = (TransactionManager) txnMgr; - this.dataSource = transactionManager.getDataSource(); this.serverName = transactionManager.getServerName(); } + /** + * Return the current dataSource taking into account multi-tenancy. + */ + private DataSource dataSource() { + return transactionManager.getDataSource(); + } + private TransactionSynchronizationRegistry getSyncRegistry() { try { InitialContext ctx = new InitialContext(); @@ -121,7 +122,7 @@ public class JtaTransactionManager implements ExternalTransactionManager { // "wrap" it in a Ebean specific JtaTransaction String txnId = String.valueOf(System.currentTimeMillis()); - JtaTransaction newTrans = new JtaTransaction(txnId, true, ut, dataSource, transactionManager); + JtaTransaction newTrans = new JtaTransaction(txnId, true, ut, dataSource(), transactionManager); // create and register transaction listener JtaTxnListener txnListener = createJtaTxnListener(newTrans);