2009-11-23 4 views
13

우리는 Spring 설정에서 Spring 트랜잭션을 다음과 같이 설정한다.Spring JTA 설정 - TransactionManager를 설정하는 방법?

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

질문 - java:/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> 
+1

일반적으로 말하자면 JBoss 버전, 개발자가 배포하는 응용 프로그램 종류 등 가능한 한 많은 정보를 제공하는 것이 좋습니다. 여기서 질문을 해결할 것이라고 말하지는 않지만 도움이 될 수 있습니다. –

답변

13

네, 괜찮습니다. 보고 있던 스택 추적도 괜찮습니다. <tx:jta-transaction-manager/>은 여러 다른 표준 위치에서 트랜잭션 관리자를 얻으려고합니다. 실패한 JNDI 조회마다 javax.naming.NameNotFoundException이 표시됩니다.

java:/TransactionManager은 기본적으로 JBoss가 바인딩됩니다. 다른 서블릿 컨테이너는 java:/comp/TransactionManager으로 기본 설정됩니다. 이는 TM의 "표준"위치라고 생각합니다. Spring reference documentation에서

: 웹 로직, 웹 스피어 OC4J를 포함한 표준 시나리오에 대한

, 편리한 <tx:jta-transaction-manager/> 구성 요소를 사용하여 을 고려하십시오. 그러면 은 기본 서버 인 을 자동으로 감지하고 플랫폼에 가장 적합한 관리자를 선택할 수 있습니다. 즉, 서버 특정 어댑터 클래스 (다음 섹션 참조)를 명시 적으로 구성 할 필요가 없습니다. 그들은 표준 JtaTransactionManager 기본 fallback으로 자동 선택됩니다.

4

일반적인 "실수"는 배포 J2EE 구성 요소에 jta.jar 및/또는 jbossall-client.jar 같은 일을 번들하는 것입니다. 이 경우 두 번 확인하고 제거하십시오.

관련 문제