We're a community of 1077K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,076,011 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

Using Spring AOP based transaction with Struts1

Hi Friends,

I am developing one application using Struts1.3+Spring2.5+Hibernate3.6 to do practice.
In this application I am using Spring AOP transactions, but transaction is not working for me.

Please check my code snippets and help me.

web.xml

in addition to general entries, I have added the following code as well

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

applicationContext.xml

<bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory" />
    </bean>

    <bean id="matchAllWithSave" 
          class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource" lazy-init='true'>
            <property name="properties">
                <props>
                    <prop key="save*">
                        PROPAGATION_REQUIRED,-Exception</prop>
                    <prop key="start*">
                        PROPAGATION_REQUIRED,-Exception</prop>
                    <prop key="newTx*">
                        PROPAGATION_REQUIRES_NEW,-Exception</prop>                       
                    <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
                </props>
            </property>
            </bean>  
    <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
        <property name="sessionFactory" ref="mySessionFactory" />
    </bean>          
    <bean id="matchSaveTxInterceptor" 
          class="org.springframework.transaction.interceptor.TransactionInterceptor" lazy-init="true">
        <property name="transactionManager"><ref bean="transactionManager"/></property>
        <property name="transactionAttributeSource"><ref bean="matchAllWithSave"/></property>

    </bean>
    <bean id="autoProxyCreator" 
          class="com.mokjas.extra.InterfaceAutoProxyCreator" lazy-init="true">
        <property name="interceptorNames">
          <list>
            <idref local="matchSaveTxInterceptor"/>
            <idref local="hibernateInterceptor"/>

          </list>
        </property>
        <property name="interfaces">
          <list>
            <value>com.mokjas.service.ITransactionalSaveService</value>
          </list>
        </property>
    </bean>

Here all my service classes implemented this "ITransactionalSaveService" marker interface. So as per the above configuration,any service class which has save* method should wrap with transactions. But for me it is not working.

ServiceFinder.java

public class ServiceFinder {
    public static ApplicationContext getContext(HttpServletRequest httpRequest) {
        return WebApplicationContextUtils.getRequiredWebApplicationContext(
                httpRequest.getSession().getServletContext());
    }
}

Struts Action class:

here in my action class I am calling save* method of my service class(implemented ITransactionalSaveService)

transferService.saveAccountTransfer(fromBean, toBean);

ServiceImpl class:

public void saveAccountTransfer(UserBean fromBean,UserBean toBean){
        // TODO Auto-generated method stub

        getBankDAO().processTransfer(toBean,"To");
        getBankDAO().processTransfer(fromBean,"From");

    }

DAO Impl class:

public void processTransfer(UserBean bean, String name) {
        Session session=getSessionFactory().openSession();
        session.saveOrUpdate(bean);
        session.close();    

    }

After we execute this
session.saveOrUpdate(bean);
my hibernate is not saving the beans accordingly because there is no transaction applied. so hibernate is generating only select statement,not update statement.

Please help me to solve my issue.

Thanks,
Bunny

1
Contributor
0
Replies
1
View
mullangi13
Newbie Poster
1 post since Aug 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

This article has been dead for over three months: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
View similar articles that have also been tagged:
 
© 2013 DaniWeb® LLC
Page rendered in 0.0890 seconds using 2.79MB