Странное поведение в Hibernate Transaction Management после обновления с 4.1.10 до 5.2.10
После обновления с hibernate 4.1.10 до 5.2.10 мы сталкиваемся со странным поведением. Следующий код работает над версией (4.1.10)
Session session1 = sessionFactory.openSession();
System.out.println("session 1 opened");
session1.beginTransaction();
System.out.println("Transaction 1 begin");
/////
Session session2 = sessionFactory.openSession();
System.out.println("session 2 opened");
session2.beginTransaction();
System.out.println("Transaction 2 begin");
session2.getTransaction().commit();
System.out.println("Transaction 2 commit");
session2.close();
System.out.println("session 2 close");
//////
session1.getTransaction().commit();
System.out.println("Transaction 1 commit");
session1.close();
System.out.println("session 1 close");
со следующим конфигом
<property name="connection.datasource">.....</property>
<property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</property>
и мы получаем фабрику сеансов, используя этот код
Configuration configuration = new Configuration();
configuration.configure("com/code/dal/hibernate.cfg.xml");
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Тот же код выдает " java.lang.IllegalStateException: транзакция уже активна" после обновления.
Новый конфиг
<property name="connection.datasource">........</property>
<property name="hibernate.transaction.coordinator_class">org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorBuilderImpl</property>
<property name="hibernate.transaction.jta.platform">org.hibernate.engine.transaction.jta.platform.internal.WeblogicJtaPlatform</property>
и теперь мы получаем фабрику сеансов, используя этот код
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure("com/code/dal/hibernate.cfg.xml").build();
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder().build();
sessionFactory = metadata.getSessionFactoryBuilder().build();