Index: cpa/src/main/java/org/exolab/castor/jdo/engine/GlobalDatabaseImpl.java =================================================================== --- cpa/src/main/java/org/exolab/castor/jdo/engine/GlobalDatabaseImpl.java (revision 8269) +++ cpa/src/main/java/org/exolab/castor/jdo/engine/GlobalDatabaseImpl.java (working copy) @@ -90,8 +90,6 @@ _ctx.setCallback(_callback); _ctx.setInstanceFactory(_instanceFactory); _classLoader = classLoader; - - loadSynchronizables(); } /** @@ -163,6 +161,9 @@ if (_transaction == null || _ctx == null || !_ctx.isOpen()) { throw new IllegalStateException(Messages.message("jdo.txNotInProgress")); } + + registerSynchronizables(); + if (_ctx.getStatus() == Status.STATUS_MARKED_ROLLBACK) { try { _transaction.setRollbackOnly(); @@ -219,6 +220,8 @@ "Unexpected state: afterCompletion called with status " + status); } } finally { + unregisterSynchronizables(); + if (_txMap != null && _transaction != null) { _txMap.remove(_transaction); _txMap = null; Index: cpa/src/main/java/org/exolab/castor/jdo/engine/LocalDatabaseImpl.java =================================================================== --- cpa/src/main/java/org/exolab/castor/jdo/engine/LocalDatabaseImpl.java (revision 8269) +++ cpa/src/main/java/org/exolab/castor/jdo/engine/LocalDatabaseImpl.java (working copy) @@ -70,8 +70,6 @@ _ctx.setCallback(_callback); _ctx.setInstanceFactory(_instanceFactory); _classLoader = classLoader; - - loadSynchronizables(); } /** Index: src/doc/release-notes.xml =================================================================== --- src/doc/release-notes.xml (revision 8343) +++ src/doc/release-notes.xml (working copy) @@ -91,6 +91,27 @@ ]]> + + + Castor does not care on registered TxSynchronizable implementations + when using global transaction demarcation. + + + Ralf Joachim + ralf.joachim@syscon.eu + + + Ralf Joachim + ralf.joachim@syscon.eu + + + Ralf Joachim + ralf.joachim@syscon.eu + + Bug + JDO + 20090804 + Move buildStatement from SQLStatementCreate to Key Generators.