2011-02-18 118 views
1

我想从JPA迁移到JTA并使用bitronix事务管理器。尝试运行单元测试时遇到错误消息。根据Bitronix的文档,这是正常的B/C我的春天上下文配置试图加载资源两次(一次在基类,然后在测试类,见下面的代码),我已经尝试与atomikos相同,我得到了类似的结果。bitronix交易管理器

产生的原因: java.lang.IllegalArgumentException异常: 资源与uniqueName '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()); 
} 

我想保持不同情境下的配置文件中的子类,使这项工作那样,任何想法不胜感激....

+0

这两个XML文件是什么? – skaffman 2011-02-18 22:25:25

回答

1

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

我想你的两个上下文文件之间会有一些重叠,或者连接池并不总是像他们应该关闭一样。不幸的是,您发布的信息太少,无法获得明确的答案。