2012-03-13 141 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