백그라운드에서 다른 구현을 사용하는 경우에도 트랜잭션을 JTA를 통해 처리해야합니다. (최대 절전 모드, Webphere, Weblogic 등). 이상적으로는 다음과 같아야합니다
<bean id="transactionImpl" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager ref="transactionImpl"/>
</bean>
을 당신이 대신 Hibernate의 트랜잭션 관리자를 사용하여 당신의 원래의 질문에 최대 절전 모드 하나에 transactionImpl 빈의 클래스를 대체하고 싶어합니다.
어떤 관리자가 더 좋은지에 관해서는 솔직히 하나를 선택할 다른 중요한 이유를 생각할 수 없습니다. 내가 생각할 수있는 유일한 방법은 단순히 장애 조치가 아닌 부하를 공유하는 응용 프로그램 서버를 클러스터링 한 경우 효과적 일 수 있습니다. 어쩌면 거래가 그들간에 공유 될 수 있습니까? 나는 모른다. 누군가가 다른 것을 생각할 수 있다면 저를 시정 해주십시오.
편집 : 그것은 위로는 WebSphere 6.0에 사용되는, 그리고 WebSphere Transaction Manager Spring Docs에 따라 당신은 JTA에 대한 직접적인 대체 WebSphereUowTransactionManager를 사용해야합니다 필요하지 않습니다 (내가 위에서 무엇을 사용) WebSphereTransactionManagerFactoryBean 것 같습니다. 따라서 원래 예제에서 Hibernate 트랜잭션 관리자 대신 WebSphereUowTransactionManager 클래스를 사용하면된다. 스프링은 트랜잭션 관리자를 애플리케이션 서버의 JNDI 트리에서 떼어 놓기 때문에 JNDI 이름을 지정하기 위해 일부 속성을 설정해야 할 수도있다.
WebSphere 트랜잭션 관리자는 다른 무엇보다도 트랜잭션 일시 중단 기능을 제공합니다. 개인적으로 나는 WebSphere 또는 Weblogic 또는 Glassfish 또는 기타 여부에 관계없이 앱 서버의 트랜잭션 관리자를 사용합니다.
응답 해 주셔서 감사합니다. 지금해야 할 일이 무엇인지 더 잘 알고 있습니다. WebSphereUowTransactionManager는 Spring 2.1RC1 이상과 WAS 6.0 이상에서만 작동한다는 점을 알게되었습니다. 불행히도 우리는 Spring 2.0.7을 사용하고 있습니다. –
또한 WebSphereTransactionManagerFactoryBean은 Spring 3.0에서 제거되었다. –