在容器外定义jta数据源

我们的应用程序目前使用的是JBoss standalone.xml中定义的数据源,基本上我们需要在应用程序中定义它,而不是在容器中定义一段时间。 我们目前的设置是;

应用程序的context.xml;

    ...         

persistance.xml:

   org.hibernate.ejb.HibernatePersistence java:/jdbc/RTSdb ... true         

datasource.xml:

       

基本上我想要的只是线

 java:/jdbc/RTSdb 

从datasource.xml读取而不是去容器(JBoss)。 看起来它很简单,但在阅读了一些Spring和Oracle文档后,我找不到答案。

是的,您可以使用符合JTA标准的事务管理器,如Atomikos或Bitronix。 他们各自的站点都有关于如何使用Spring配置它们的文档。 通常,您必须遵循以下步骤(如果使用Atomikos):

  1. 保留现有的XA数据源(在您的情况下为rtsDatasource )或创建一个(如果尚未使用)(例如,如果有人拥有非XA数据源,则必须首先将该数据源转换为XA数据源)。
  2. 将XA数据源包装在AtomikosDataSourceBean
  3. EntityManagerFactory指向新的AtomikosDataSourceBean实例。
  4. 声明XA事务管理器和XA用户事务。
  5. 将XA事务管理器包装在Spring JtaTransactionManager
  6. 使用Spring JtaTransactionManager

使用H2数据库,Hibernate 4,Spring 4和Atomikos 4的简短配置片段如下所示。

 ...          com.atomikos.icatch.jta.hibernate4.AtomikosPlatform ...                  

有关详细信息,您可以看到此应用 。