2010-03-10 158 views
0

我有一個j2ee應用程序在Spring框架上運行。我正嘗試使用aop應用事務管理,但顯然它不起作用。我正在嘗試將事務應用於名爲RegisterBLogic的類中,函數名稱爲execute(ParamObject obj)。我的功能插入到數據庫中。我也把一個拋出異常我的函數強制拋出異常。申請交易管理春天

內userManagerContext:

<bean id="RegisterBLogic" 
    scope="singleton" 
    class="jp.co.anicom.fw.web.usermanager.blogic.RegisterBLogic"> 
    <property name="queryDAO" 
    ref="queryDAO" /> <property 
    name="updateDAO" ref="updateDAO" /> 
    </bean> 

裏面的ApplicationContext

<bean id="TerasolunaDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="PrototypeDataSource" /> 
    </bean> 
<tx:advice id="transactionInterceptor" transaction-manager="transactionManager"> 
    <tx:attributes> 
    <tx:method name="insert*" propagation="REQUIRED" 
    rollback-for="java.lang.Exception" /> 
    <tx:method name="execute*" propagation="REQUIRED" 
    rollback-for="java.lang.Exception" /> 
    <tx:method name="*" propagation="REQUIRED" read-only="true" /> 
    </tx:attributes> 
</tx:advice> 
<!-- AOPの設定 --> 
<aop:config> 
    <aop:pointcut id="blogicBeans" expression="bean(*BLogic)" /> 
    <aop:pointcut id="serviceBeans" expression="bean(*Service)" /> 
    <aop:advisor pointcut-ref="blogicBeans" advice-ref="transactionInterceptor" /> 
    <aop:advisor pointcut-ref="serviceBeans" advice-ref="transactionInterceptor" /> 
</aop:config> 

呀存在,這些豆子。我在userManagerCOntext.xml下有這個bean聲明。這個xml是通過加載在struts config中的

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 
    <set-property property="contextConfigLocation" 
    value="/WEB-INF/userManager/userManagerContext.xml"/> 

</plug-in> 

我發現了這個問題。目前我正在使用來自JNDI的數據源。 類=「org.springframework.jndi.JndiObjectFactoryBean」>

我改成與物業正常的數據源defaultAutoCommit設置爲false

<bean id="dataSource" 
    class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" 
     value="oracle.jdbc.OracleDriver" /> 
    <property name="url" 
     value="jdbc:oracle:thin:@192.168.178.82:1521:anicom" /> 
    <property name="username" value="jay" /> 
    <property name="password" value="jay" /> 
    <property name="initialSize" value="5" /> 
    <property name="maxActive" value="10" /> 
    <property name="defaultAutoCommit" value="false" /> 
      </bean> 

如何使用JNDI數據源,但能將有點類似defaultAutoCommit的屬性設置爲false。我正在使用Oracle weblogic服務器,並且我的數據源存儲在其中,通過JNDI訪問

回答

1

首先,此XML格式錯誤(應爲</tx:advice>)。

處理此配置時,您想在AOP中包裝的bean是否已經存在?

+0

我已經更新了我的問題上面.. tnx – cedric 2010-03-10 10:40:25

+0

嗨。我有新的進展。請檢查上面的更新。我現在的問題是使用jndi時,我如何設置一個類似於defaultAutoCommit的屬性並將其設置爲false。 – cedric 2010-03-10 12:10:04

+0

如果你通過JNDI獲得它,也許另一端應該初始化它?我的意思是JNDI bean被創建/註冊的地方。 – 2010-03-10 16:17:20