2012-03-13 97 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會導致協調問題?

我們發現,當我們有高負載時,我們會得到大量的weblogic連接版本。

這與連接釋放問題有什麼關係?

我們使用Hibernate進行DAO操作。

+2

你可以說明你想解決哪個問題嗎? – nwinkler 2012-03-13 15:14:03

+0

weblogic在事務完成之前關閉數據庫連接(不是超時),但大多數情況下同一連接是從其他地方打開和關閉的 – Sammy 2012-03-13 15:23:56

回答

1

首先,分析日誌以查看spring何時創建和關閉事務。 爲此,將org.springframework.transaction的記錄器設置爲DEBUG。

接下來我的猜測是你需要檢查你的@Transactional註釋(我假設你在你的管理器(= services?)上使用。確保傳播設置正確,因爲這可能與你的問題有關而不會看到你的經理的代碼當然)

0

直接回答你的問題:

什麼是具有以下配置的問題?將在不同級別具有相同的DAO會導致協調問題?

什麼也沒有。我看不出有什麼問題。不確定你對'同一個DAO'的含義 - 你沒有相同的DAO。你有相同的父母,但有3個不同的DAO。

如果您問,爲什麼weblogic在您的事務完成之前關閉您的數據庫連接,我們無法用上述信息來回答。

+0

不可能說沒有看到他的配置,但假設他使用默認範圍來創建abcDAO bean,這將是一個單身人士,所以它是相同的DAO,但是,這應該與他的問題完全不相關。 – 2012-03-19 13:17:03