2009-07-22 4 views
1

Websphere Application Server Express v6.1을 사용 중이며 Spring 2.0.7, Hibernate 3.5를 사용하는 애플리케이션을 작성 중이다. 내 데이터 소스는 Oracle 10g입니다.WAS 6.1, Hibernate, Spring 및 트랜잭션 관리 구성

나는이 두 질문 더 나은 트랜잭션 관리자가

  1. ? Websphere 또는 최대 절전 모드?
  2. IBM이 대답이라면 스프링 구성 XML에서 어떻게 구성해야합니까?

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="rmsSessionFactory" /> 
</bean> 

이 웹 스피어에 대한 어떤 모습 것이다 최대 절전 모드

내 현재의 선언입니까?

답변

3

백그라운드에서 다른 구현을 사용하는 경우에도 트랜잭션을 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 또는 기타 여부에 관계없이 앱 서버의 트랜잭션 관리자를 사용합니다.

+1

응답 해 주셔서 감사합니다. 지금해야 할 일이 무엇인지 더 잘 알고 있습니다. WebSphereUowTransactionManager는 Spring 2.1RC1 이상과 WAS 6.0 이상에서만 작동한다는 점을 알게되었습니다. 불행히도 우리는 Spring 2.0.7을 사용하고 있습니다. –

+2

또한 WebSphereTransactionManagerFactoryBean은 Spring 3.0에서 제거되었다. –

0
  1. 더 나은 것을 정의하십시오.
  2. 다음은 WebSphere 트랜잭션 관리자 용 Spring docs입니다. 나는 당신이 단지 트랜잭션 관리자 클래스를 변경한다고 생각한다. 팩토리 클래스에서도 특별한 것을해야 할 수도 있습니다.
+0

나는 이미 많은 문헌을 읽었습니다. 나는 더 구체적인 경험이나 문학을 가진 사람으로부터 답을 찾고 있습니다. 나는 더 나은 이해를 도울 필요가있다. 아마도 Websphere Transaction 서버가 단일 응용 프로그램 서버 응용 프로그램에 과도하게 사용됩니까? 모두 고마워. –

+0

나는 WebSphere를 사용 해본 적이 없다. 하나님 께 감사한다. 너는 너 자신에있어. 필자의 애플리케이션 서버용으로 작성된 트랜잭션 관리자를 사용하는 것이 가장 좋습니다. 나는 WebLogic과 JBOSS를 사용하고, 그것들은 나의 TX 관리자를 결정한다. – duffymo

1

나는 큰 봄 + 최대 절전 모드 + websphere 프로젝트에 있었고 WebsphereUowTransactionManager는 우리가 끝낸 프로젝트입니다.

기본 WebsphereTransactionManager가 API의 내부 websphere API를 사용하는 것이 문제입니다. UOW TxManager는 훌륭하게 작동하며 좀 더 많은 기능을 제공합니다 (예 : 일시 중지 기능 사용).

jndi 문제의 경우 설정에 대해 걱정할 필요가 없습니다. 트랜잭션 관리자가 문제를 처리합니다.

그러나 UOW 트랜잭션 관리자가 spring + hibernate + websphere 문제를 해결하는 개발자 작업 article에서 인용문을 볼 것을 적극 권장합니다.

그러나, 봄 (스프링 2.5) 이전 버전의 자원을 관리 할 수있는 웹 및 EJB 컨테이너의 기능을 손상 및 응용 프로그램 사용에 대한 지원되지 않는 내부는 WebSphere 인터페이스 을 사용했다. 이로 인해 컨테이너가 알려지지 않은 상태가 될 수 있습니다. 으로 인해 데이터가 손상 될 수 있습니다.

당신은 당신이 어떤 문제가있는 것 같지는, 그리고 밀어 쑤셔 넣어 오면, 당신은 단지 당겨 그 org.springframework.transaction.jta.WebSphereUowTransactionManager 스프링 2.5의 출력 및 추가 할 수 있습니다 귀하의 봄 버전을 업그레이드 할 수 귀하의 응용 프로그램에.

관련 문제