2012-03-13 6 views
-1

다음 설정이 있습니다.중첩 된 봄 TxProxyTemplate 문제

<bean id="abcManager" parent="TxProxyTemplate"> 
    <property name="target"> 
     <bean class="com.x.y.AbcManagerImpl"> 
      <property name="abcDAO" ref="abcDAO"/> 
      <property name="xyzManager" ref="xyzManager"/> 
     </bean> 
    </property> 
</bean> 

<bean id="xyzManager" parent="TxProxyTemplate"> 
    <property name="target"> 
     <bean class="com.x.y.XyzManagerImpl"> 
      <property name="abcDAO" ref="abcDAO"/> 
      <property name="anotherManager" ref="anotherManager"/> 
     </bean> 
    </property> 
</bean> 

<bean id="anotherManager" parent="TxProxyTemplate"> 
    <property name="target"> 
     <bean class="com.x.y.AnotherManagerImpl"> 
     <property name="abcDAO" ref="abcDAO"/> 
     <property name="oneMoreManager" ref="oneMoreManager"/> 
     </bean> 
    </property> 
</bean> 

다음 구성의 문제점은 무엇입니까? 서로 다른 레벨에서 같은 DAO를 사용하면 concurency 문제가 발생합니까?

로드가 많을 때 많은 weblogic 연결 릴리스가 있음을 발견했습니다.

연결 해제 문제와 어떤 관련이 있습니까?

우리는 DAO 연산을 위해 Hibernate를 사용한다.

+2

해결할 문제를 명시 할 수 있습니까? – nwinkler

+0

트랜잭션이 완료되기 전에 weblogic 닫는 DB 연결 (제한 시간은 아님), 대부분 동일한 연결이 다른 곳에서 열리고 닫힙니다. – Sammy

답변

1

먼저 로그를 분석하여 스프링이 트랜잭션을 생성하고 닫는시기를 확인하십시오. org.springframework.transaction에 대한 로거를 DEBUG로 설정하십시오.

다음으로 @Transactional 주석 (관리자 (= 서비스?)에서 사용한다고 가정)을 검토해야합니다. 전파가 올바르게 설정되었는지 확인하십시오. 이는 문제와 관련이있을 수 있으므로 올바르게 설정해야합니다 관리자의 코드를 보지 않고)

0

직접 귀하의 질문에 대답하려면 :

다음과 같은 구성의 문제는 무엇입니까? 서로 다른 레벨에서 같은 DAO를 사용하면 concurency 문제가 발생합니까?

아무것도 아니요. 나는 이것에 대해 잘못된 것을 보지 않는다. '같은 DAO'에 대한 의미가 확실하지 않습니다. DAO가 동일하지 않습니다. 당신에게는 같은 부모가 있지만 3 개의 다른 DAO가 있습니다.

트랜잭션이 완료되기 전에 웹 로직이 DB 연결을 닫는 이유를 묻는다면 위의 정보로 대답 할 수 없습니다.

+0

자신의 설정을 보지 않고서는 불가능하지만 abcDAO 빈을 만들기 위해 기본 스코프를 사용한다고 가정하면 이것은 사용되는 동일한 DAO이므로 싱글 톤이됩니다. 그러나 이것은 그의 문제와 관련이 없어야합니다. –