]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Introduce transaction management
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Jun 2008 17:07:13 +0000 (17:07 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Jun 2008 17:07:13 +0000 (17:07 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1312 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java
org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml
org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ws-servlet.xml

index 10a7aab22d3edcecd4c76b0541292aab0c42771b..e9e63da0fc4b16493e047f8ef5cad3dd63c0827e 100644 (file)
@@ -26,20 +26,21 @@ public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint {
                if (requestObject instanceof SlcExecutionRequest) {
 
                        SlcExecutionRequest msg = (SlcExecutionRequest) requestObject;
-                       SlcExecution slcExecution = msg.getSlcExecution();
+                       SlcExecution slcExecutionMsg = msg.getSlcExecution();
 
-                       if (slcExecutionDao.getSlcExecution(slcExecution.getUuid()) == null) {
+                       SlcExecution slcExecutionPersisted = slcExecutionDao.getSlcExecution(slcExecutionMsg.getUuid());
+                       if (slcExecutionPersisted == null) {
                                if (log.isTraceEnabled())
                                        log.trace("Creating SLC execution #"
-                                                       + slcExecution.getUuid());
+                                                       + slcExecutionMsg.getUuid());
 
-                               slcExecutionDao.create(slcExecution);
+                               slcExecutionDao.create(slcExecutionMsg);
                        } else {
                                if (log.isTraceEnabled())
                                        log.trace("Updating SLC execution #"
-                                                       + slcExecution.getUuid());
+                                                       + slcExecutionMsg.getUuid());
 
-                               slcExecutionDao.update(slcExecution);
+                               slcExecutionDao.merge(slcExecutionMsg);
                        }
                        return null;
 
@@ -64,5 +65,4 @@ public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint {
                                        + requestObject.getClass());
                }
        }
-
 }
index 0ea81004e0961c58dfb4bd4dd78fe8c42b409f2e..21efb5d087ee9ad18670a3bd808923b197b41079 100644 (file)
@@ -4,7 +4,9 @@
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
-        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
        default-lazy-init="true">
 
        <import
        <bean id="slcServerDefault.sessionFactory.hibernateTestHSQL"
                parent="slcTemplates.sessionFactory.hibernateBasic">
                <property name="dataSource"
-                       ref="slcDefault.dataSource.inMemoryTestHSQL" />
+                       ref="slcServerDefault.dataSource.inMemoryTestHSQL" />
                <property name="hibernateProperties">
                        <value><![CDATA[
                                hibernate.dialect=org.hibernate.dialect.HSQLDialect
                                hibernate.hbm2ddl.auto=create
-                               hibernate.current_session_context_class=thread
                                hibernate.generate_statistics=true
+                               hibernate.connection.autocommit=false
                        ]]></value>
                </property>
        </bean>
 
+       <bean id="slcServerDefault.dataSource.inMemoryTestHSQL"
+               parent="slcDefault.dataSource.inMemoryTestHSQL"
+               destroy-method="destroy">
+               <property name="autoCommit" value="false" />
+       </bean>
+
        <bean id="slcServerDefault.sessionFactory.persistentHSQL"
                parent="slcTemplates.sessionFactory.hibernateBasic">
                <property name="dataSource"
        </bean>
 
        <!-- DAOs -->
-       <bean id="testResultDao" parent="slcTemplates.dao.testResultDao">
+       <bean id="hibernateTemplate"
+               class="org.springframework.orm.hibernate3.HibernateTemplate">
                <property name="sessionFactory" ref="sessionFactory" />
+               <property name="allowCreate" value="false" />
+       </bean>
+
+       <bean id="testResultDao" parent="slcTemplates.dao.testResultDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
        </bean>
 
        <bean id="testResultCollectionDao"
                parent="slcTemplates.dao.testResultCollectionDao">
-               <property name="sessionFactory" ref="sessionFactory" />
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
        </bean>
 
        <bean id="testRunDescriptorDao"
                parent="slcTemplates.dao.testRunDescriptorDao">
-               <property name="sessionFactory" ref="sessionFactory" />
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
        </bean>
 
        <bean id="slcExecutionDao"
                parent="slcTemplates.dao.slcExecutionDao">
-               <property name="sessionFactory" ref="sessionFactory" />
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
        </bean>
 
        <!-- Hibernate instrumentation -->
                class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
                <property name="sessionFactory" ref="sessionFactory" />
        </bean>
+
+       <!-- Transaction -->
+       <bean id="transactionManager"
+               class="org.springframework.orm.hibernate3.HibernateTransactionManager"
+               lazy-init="false">
+               <property name="sessionFactory" ref="sessionFactory" />
+       </bean>
+
 </beans>
\ No newline at end of file
index 7c48b2523515066ec0ffdaaa4deb3a2c76c92c9f..794d977824937f314855c243f8e91bb3c3a7e223 100644 (file)
 
        <bean class="org.argeo.slc.ws.CustomSoapExceptionResolver" />
 
-       <!-- Transaction
+       <!-- Transaction -->
 
        <aop:config>
-               <aop:pointcut id="resultPartRequestEpMethods"
-                       expression="execution(* org.argeo.slc.ws.test.tree.ResultPartRequestEp.*(..))" />
-               <aop:advisor advice-ref="resultPartRequestEpAdvice"
-                       pointcut-ref="resultPartRequestEpMethods" />
+               <aop:pointcut id="epMethods"
+                       expression="execution(* org.springframework.ws.server.endpoint.MessageEndpoint.invoke(..))" />
+               <aop:advisor advice-ref="epAdvice" pointcut-ref="epMethods" />
        </aop:config>
 
-       <tx:advice id="resultPartRequestEpAdvice"
-               transaction-manager="hibernateTransactionManager">
+       <tx:advice id="epAdvice" transaction-manager="transactionManager">
                <tx:attributes>
-                       <tx:method name="*" propagation="REQUIRED" />
+                       <tx:method name="*" propagation="REQUIRES_NEW" />
                </tx:attributes>
        </tx:advice>
- -->
+
 </beans>
\ No newline at end of file