Spring bitronix事务管理器

Spring bitronix事务管理器,spring,jta,Spring,Jta,我正在尝试从JPA迁移到JTA,并使用bitronix事务管理器。我在尝试运行单元测试时收到以下错误消息。根据bitronix文档,这是正常的b/c,我的spring上下文配置尝试加载资源两次(一次在基类中,然后在测试类中,请参见下面的代码),我在atomikos中也尝试了同样的方法,并得到了类似的结果 原因: java.lang.IllegalArgumentException: 具有唯一名称“xyzDb”的资源 已经注册了 我的基层 @ContextConfiguration(locatio

我正在尝试从JPA迁移到JTA,并使用bitronix事务管理器。我在尝试运行单元测试时收到以下错误消息。根据bitronix文档,这是正常的b/c,我的spring上下文配置尝试加载资源两次(一次在基类中,然后在测试类中,请参见下面的代码),我在atomikos中也尝试了同样的方法,并得到了类似的结果

原因: java.lang.IllegalArgumentException: 具有唯一名称“xyzDb”的资源 已经注册了

我的基层

@ContextConfiguration(locations = {"classpath:com/xyz/baseContext.xml"})
@Transactional
public abstract class AbstractTestSupport extends Assert implements ApplicationContextAware
{
在一些单元测试中,我必须扩展测试支持并添加一个上下文配置文件,如下所示。所以它为基类加载一次上下文,为子类加载一次上下文,但失败了

儿童班

@ContextConfiguration(locations = {"classpath:com/xyz/testContext.xml"})
public class UnitTest extends AbstractTestSupport
{
测试之后,我将关闭上下文,所以下一个测试可以正常工作,只要它不使用另一个上下文配置文件扩展基类

@AfterClass
public static void onTearDownAfterClass() throws Exception
{
    applicationContext.shutdownApplicationContext();
    assertFalse("Spring application context is still active after shutdown. ", applicationContext.isActive());
}

我希望在子类中保留上下文配置文件,并使其像这样工作,任何想法都非常受欢迎……

错误消息基本上意味着您创建了具有唯一名称“xyzDb”的连接池(记住,您需要在BTM的池上设置uniqueName属性?)这是在引发异常时的第二次。您不能这样做:每个连接池必须具有唯一的名称,并且必须先关闭,然后才能创建另一个具有相同名称的连接池


我想这是由于两个上下文文件之间存在一些重叠造成的,或者连接池并非总是像它们应该关闭的那样关闭。不幸的是,您发布的信息太少,无法获得明确的答案。

错误消息基本上意味着您在引发异常时第二次创建了具有唯一名称“xyzDb”的连接池(请记住,您需要在BTM的池上设置uniqueName属性?)。您不能这样做:每个连接池必须具有唯一的名称,并且必须先关闭,然后才能创建另一个具有相同名称的连接池


我想这是由于两个上下文文件之间存在一些重叠造成的,或者连接池并非总是像它们应该关闭的那样关闭。不幸的是,您发布的信息太少,无法得到明确的答案。

这两个XML文件中有什么内容?只是一个离题说明:我对bitronix tm的印象不好,甚至一些测试表明,在事务挂起等功能方面,它的性能比jboss standalone transaction manager差。这两个XML文件中有什么内容?只是一个离题的注意事项:我对bitronix tm的印象不好,甚至一些测试表明,在事务暂停等功能方面,它的性能比jboss standalone transaction manager差。