Компонент Toplink и CMT, управляемый сообщениями

Я пытаюсь интегрировать Toplink с компонентом, управляемым сообщениями CMT. МОЙ MDB - это CMT. Когда я пытаюсь использовать фиксацию unitofwork, он выдает ошибку, говоря, что присутствует глобальная транзакция, поэтому я не могу выполнить локальную фиксацию. После исследования топлинка они предложили следующие вещи. использовать пул внешних подключений и использовать getactiveUnit of work для фиксации. Мы используем контейнер oracle 10.1.3 для пула соединений и внешний контроллер транзакций (контроллер транзакций OC4J). Когда я перешел на getActiveUnitWork (). Commit, я получил нулевой указатель из-за нулевой активной единицы работы. Насколько я понимаю, контейнер запускает транзакцию, когда выполняется сообщение MDB. Таким образом, модуль работы toplink getactive должен связывать единицу работы с внешней транзакцией. Метод единицы работы Toplink GetActive должен возвращать значение null только при отсутствии внешней транзакции. Я не уверен, как решить эту проблему или что не так. Я ценю любую помощь в этом.

Спасибо. TZ


person user1775434    schedule 25.10.2012    source источник


Ответы (1)


Убедитесь, что вы правильно установили свой ExternalTransactionController в своем сеансе и что активна транзакция JTA.

person James    schedule 31.10.2012