osworkflow2.8如何支持spring3.1+hibernate4?
2012-06-29 11:15
323 查看
osworkflow默认只支持hibernate3,而升级到hibernate4后,hibernate3.session是不适合hibernate4的,这要从源头变更才能解决问题。
原打算重写一下相关代码,看了看源代码,发现了更简单的解决办法。
其实解决很简单,对workflowstore自己实现一把就好了。:
SPRING配置:
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="workflowFactory" class=" com.opensymphony.workflow.spi.hibernate.SpringWorkflowFactory" init-method="init">
<property name="resource">
<value>workflows.xml</value>
</property>
<property name="reload">
<value>false</value>
</property>
</bean>
<bean id="workflowStore" class="com.xxx.core.workflow.spi.hibernate4.SpringHibernateWorkflowStore">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="propertySetDelegate">
<bean id="propertySetDelegate" class="com.opensymphony.workflow.util.PropertySetDelegateImpl"/>
</property>
<property name="cacheable"><value>true</value></property>
</bean>
红色部分的实现,它将实现hibernate3里的AbstractHibernateWorkflowStore:
import com.opensymphony.workflow.StoreException;
import com.opensymphony.workflow.spi.hibernate3.AbstractHibernateWorkflowStore;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import java.sql.SQLException;
import java.util.Map;
/**
* xia
*/
public class SpringHibernateWorkflowStore extends AbstractHibernateWorkflowStore {
private SessionFactory sessionFactory;
public SpringHibernateWorkflowStore() {
super();
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void init(Map props) throws StoreException {
}
protected Object execute(final InternalCallback action) throws StoreException {
//更多的处理
return action.doInHibernate(session);
}
}
经测试,完全没有问题。
原打算重写一下相关代码,看了看源代码,发现了更简单的解决办法。
其实解决很简单,对workflowstore自己实现一把就好了。:
SPRING配置:
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="workflowFactory" class=" com.opensymphony.workflow.spi.hibernate.SpringWorkflowFactory" init-method="init">
<property name="resource">
<value>workflows.xml</value>
</property>
<property name="reload">
<value>false</value>
</property>
</bean>
<bean id="workflowStore" class="com.xxx.core.workflow.spi.hibernate4.SpringHibernateWorkflowStore">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="propertySetDelegate">
<bean id="propertySetDelegate" class="com.opensymphony.workflow.util.PropertySetDelegateImpl"/>
</property>
<property name="cacheable"><value>true</value></property>
</bean>
红色部分的实现,它将实现hibernate3里的AbstractHibernateWorkflowStore:
import com.opensymphony.workflow.StoreException;
import com.opensymphony.workflow.spi.hibernate3.AbstractHibernateWorkflowStore;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import java.sql.SQLException;
import java.util.Map;
/**
* xia
*/
public class SpringHibernateWorkflowStore extends AbstractHibernateWorkflowStore {
private SessionFactory sessionFactory;
public SpringHibernateWorkflowStore() {
super();
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void init(Map props) throws StoreException {
}
protected Object execute(final InternalCallback action) throws StoreException {
//更多的处理
return action.doInHibernate(session);
}
}
经测试,完全没有问题。
相关文章推荐
- spring cache支持(spring3.1如何使用cache 缓存)
- 《partner4java 讲述Spring入门》之:spring cache支持(spring3.1如何使用cache 缓存)
- Spring 3.1 MVC REST 支持之序列化
- hibernate4整合spring3.1出现java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider
- 如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)
- Spring 3.1 MVC REST 支持之序列化
- spring3.2+hibernate4 事务管理(支持自定义部分开发和关闭事务)
- Spring JDBC 如何获得和生成主键+Spring JDBC对行集的支持
- hibernate4整合spring3.1出现java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider
- 如何用Spring 3.1的Environment和Profile简化工作
- hibernate4整合spring3.1的过程中的异常问题
- spring3.1+hibernate4
- 整合spring3.1和hibernate4
- 如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)
- Spring 中对JMS的支持如何实现?
- spring3 hibernate4 如何支持EventListener
- spring 3.1中对JSR-330的支持
- Spring3.1, Hibernate4与Jackson2处理Json序列化异常
- 问题:Spring如何支持Hibernate
- Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理