2011-02-18 139 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屬性?),這是在拋出異常的時候第二次。你不能這樣做:每個連接池必須有一個唯一的名字,並且必須先關閉,才能創建另一個具有相同名稱的連接池。

我想你的兩個上下文文件之間會有一些重疊,或者連接池並不總是像他們應該關閉一樣。不幸的是,您發佈的信息太少,無法獲得明確的答案。