Apply Transaction Management Spring - PullRequest
       5

Apply Transaction Management Spring

0 голосов
/ 10 марта 2010

У меня есть приложение j2ee, работающее на Spring Framework. Я пытаюсь применить управление транзакциями, используя aop, но, видимо, это не сработает. Я пытаюсь применить транзакцию к функции из класса с именем RegisterBLogic с именем функции execute (ParamObject obj). Моя функция вставляет в базу данных. Я также помещаю функцию выброса ne Exception, чтобы вызвать исключение.

Внутри 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>

Внутри приложенияContext

  <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>

Да, эти бобы уже существуют. У меня есть это объявление bean под userManagerCOntext.xml. Этот xml загружается в конфигурацию распорок через

 <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 Ответ

1 голос
/ 10 марта 2010

Прежде всего, этот XML-файл некорректен (должен быть </tx:advice>).

Бины, которые вы хотите обернуть в AOP, уже присутствуют при обработке этой конфигурации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...