2009-11-23 2 views
13

Мы настраиваем нашу Spring транзакцию в Spring конфигурации, как:Конфигурация Spring JTA - как установить TransactionManager?

<tx:jta-transaction-manager/> 

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

[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 
[email protected] 

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


Update: Я заменил <tx:jta-transaction-manager/> с ниже конфигурации и это похоже на работу .. Я предполагаю, что это хорошо?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager"/> 
</bean> 
+1

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

ответ

13

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

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

От Spring reference documentation:

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

4

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

Смежные вопросы