Вопрос

Мы настраиваем нашу транзакцию Spring в конфигурации Spring как:

<tx:jta-transaction-manager/>

Я так понимаю, это означает, что Spring автоматически обнаружит базовую реализацию JTA.Итак, когда мы запускаем JBoss, мы видим эти сообщения во время поиска Spring:

[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran
sactionManager]
javax.naming.NameNotFoundException: TransactionManager not bound
<<Big stack trace>>    
<<More of the same>>

И в конце концов увидите:

[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde

Вопрос в том, как мы можем редактировать наши <tx:jta-transaction-manager/> тег для явной настройки java:/Transaction Manager JTA-реализация, чтобы избежать всех этих трассировок стека в журналах?(Я бы предпочел не просто менять уровни ведения журнала Log4J)


Обновлять:я заменил <tx:jta-transaction-manager/> с приведенной ниже конфигурацией и, похоже, работает..я думаю, это нормально?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
Это было полезно?

Решение

Да, все в порядке.Трассировка стека, которую вы видели, тоже была в порядке: <tx:jta-transaction-manager/> пытается получить менеджер транзакций из нескольких стандартных мест;для каждого неудачного поиска JNDI вы увидите javax.naming.NameNotFoundException.

java:/TransactionManager это место, к которому привязывается JBoss по умолчанию;другие контейнеры сервлетов по умолчанию будут java:/comp/TransactionManager, который, я думаю, должен быть «стандартным» местоположением для ТМ.

Из Справочная документация Spring:

Для стандартных сценариев, в том числе WebLogic, WebSphere и OC4J, рассмотрим С помощью удобного <tx:jta-transaction-manager/>элемент конфигурации.Это позволит Автоматическое обнаружение базового сервера и выбрать лучшую транзакцию Менеджер, доступный для платформы.Это означает, что вам не придется Настройка серверного адаптера классов (как описано ниже разделы) явно;они скорее выбирается автоматически, с помощью кнопки стандарт JtaTransactionManager как Резервный вариант по умолчанию.

Другие советы

Распространенной «ошибкой» является объединение таких вещей, как jta.jar и/или jbossall-client.jar в развертываемом вами компоненте J2EE.Проверьте еще раз и удалите их, если это так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top