mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-08 20:24:46 +00:00
HHH-14625 Avoid performing a ServiceRegistryLookup in JtaTransactionCoordinatorImpl constructor
This commit is contained in:
parent
135361a6b8
commit
fb0279e3a7
@ -6,11 +6,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.hibernate.resource.transaction.backend.jta.internal;
|
package org.hibernate.resource.transaction.backend.jta.internal;
|
||||||
|
|
||||||
|
import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform;
|
||||||
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
|
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
|
||||||
import org.hibernate.resource.transaction.spi.DdlTransactionIsolator;
|
import org.hibernate.resource.transaction.spi.DdlTransactionIsolator;
|
||||||
import org.hibernate.resource.transaction.spi.TransactionCoordinator;
|
import org.hibernate.resource.transaction.spi.TransactionCoordinator;
|
||||||
import org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder;
|
import org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder;
|
||||||
import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner;
|
import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner;
|
||||||
|
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
||||||
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,15 +21,19 @@
|
|||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
public class JtaTransactionCoordinatorBuilderImpl implements TransactionCoordinatorBuilder {
|
public class JtaTransactionCoordinatorBuilderImpl implements TransactionCoordinatorBuilder, ServiceRegistryAwareService {
|
||||||
|
|
||||||
public static final String SHORT_NAME = "jta";
|
public static final String SHORT_NAME = "jta";
|
||||||
|
|
||||||
|
private JtaPlatform jtaPlatform;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TransactionCoordinator buildTransactionCoordinator(TransactionCoordinatorOwner owner, Options options) {
|
public TransactionCoordinator buildTransactionCoordinator(TransactionCoordinatorOwner owner, Options options) {
|
||||||
return new JtaTransactionCoordinatorImpl(
|
return new JtaTransactionCoordinatorImpl(
|
||||||
this,
|
this,
|
||||||
owner,
|
owner,
|
||||||
options.shouldAutoJoinTransaction()
|
options.shouldAutoJoinTransaction(),
|
||||||
|
jtaPlatform
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,4 +52,10 @@ public PhysicalConnectionHandlingMode getDefaultConnectionHandlingMode() {
|
|||||||
public DdlTransactionIsolator buildDdlTransactionIsolator(JdbcContext jdbcContext) {
|
public DdlTransactionIsolator buildDdlTransactionIsolator(JdbcContext jdbcContext) {
|
||||||
return new DdlTransactionIsolatorJtaImpl( jdbcContext );
|
return new DdlTransactionIsolatorJtaImpl( jdbcContext );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void injectServices(ServiceRegistryImplementor serviceRegistry) {
|
||||||
|
this.jtaPlatform = serviceRegistry.getService( JtaPlatform.class );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -74,14 +74,15 @@ public class JtaTransactionCoordinatorImpl implements TransactionCoordinator, Sy
|
|||||||
JtaTransactionCoordinatorImpl(
|
JtaTransactionCoordinatorImpl(
|
||||||
TransactionCoordinatorBuilder transactionCoordinatorBuilder,
|
TransactionCoordinatorBuilder transactionCoordinatorBuilder,
|
||||||
TransactionCoordinatorOwner owner,
|
TransactionCoordinatorOwner owner,
|
||||||
boolean autoJoinTransactions) {
|
boolean autoJoinTransactions,
|
||||||
|
JtaPlatform jtaPlatform) {
|
||||||
this.transactionCoordinatorBuilder = transactionCoordinatorBuilder;
|
this.transactionCoordinatorBuilder = transactionCoordinatorBuilder;
|
||||||
this.transactionCoordinatorOwner = owner;
|
this.transactionCoordinatorOwner = owner;
|
||||||
this.autoJoinTransactions = autoJoinTransactions;
|
this.autoJoinTransactions = autoJoinTransactions;
|
||||||
|
|
||||||
final JdbcSessionContext jdbcSessionContext = owner.getJdbcSessionOwner().getJdbcSessionContext();
|
final JdbcSessionContext jdbcSessionContext = owner.getJdbcSessionOwner().getJdbcSessionContext();
|
||||||
|
|
||||||
this.jtaPlatform = jdbcSessionContext.getServiceRegistry().getService( JtaPlatform.class );
|
this.jtaPlatform = jtaPlatform;
|
||||||
|
|
||||||
final SessionFactoryOptions sessionFactoryOptions = jdbcSessionContext.getSessionFactory().getSessionFactoryOptions();
|
final SessionFactoryOptions sessionFactoryOptions = jdbcSessionContext.getSessionFactory().getSessionFactoryOptions();
|
||||||
this.preferUserTransactions = sessionFactoryOptions.isPreferUserTransaction();
|
this.preferUserTransactions = sessionFactoryOptions.isPreferUserTransaction();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user