менеджер транзакций bitronix - PullRequest
1 голос
/ 19 февраля 2011

Я пытаюсь перейти с JPA на JTA и использовать менеджер транзакций bitronix. Я получаю сообщение об ошибке ниже при попытке запустить модульные тесты. Согласно документации bitronix, это нормально, т.к. моя весенняя конфигурация контекста пытается загрузить ресурсы дважды (один раз в базовом классе, а затем в тестовом классе, см. Код ниже), я пробовал то же самое с 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());
}

Я хочу сохранить файлы конфигурации контекста в дочерних классах и сделать так, чтобы все идеи были высоко оценены ...

1 Ответ

1 голос
/ 21 февраля 2011

Сообщение об ошибке в основном означает, что вы создали пул соединений с уникальным именем 'xyzDb' (помните, есть ли свойство uniqueName, которое необходимо установить для пулов BTM?) Во второй раз, когда выдается исключение. Вы не можете этого сделать: каждый пул соединений должен иметь уникальное имя и должен быть закрыт перед созданием другого пула с идентичным именем.

Я полагаю, что есть два совпадения между вашими двумя контекстными файлами, что вызывает это, или, возможно, пулы соединений не всегда закрываются, как они должны. К сожалению, вы опубликовали слишком мало информации, чтобы получить окончательный ответ.

...