网上找了一大堆资料,大多类同不是转载就是复制,很多根本没有验证过是否行的。错漏百出。
第一种方法:
一、spring的配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/jbpm4db" />
<property name="user" value="root" />
<property name="password" value="" />
<property name="initialPoolSize" value="3" />
<property name="minPoolSize" value="3" />
<property name="maxPoolSize" value="50" />
<property name="maxIdleTime" value="600" />
<property name="maxStatements" value="100" />
<property name="acquireIncrement" value="3" />
</bean>
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
<bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" />
<!--Hibernate SessionFatory-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>jbpm.repository.hbm.xml</value>
<value>jbpm.execution.hbm.xml</value>
<value>jbpm.history.hbm.xml</value>
<value>jbpm.task.hbm.xml</value>
<value>jbpm.identity.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--
配置事务的传播特性 要引入spring-tx-2.0.xsd标签
不然会出现spring无法创建sessionFactory的异常,进一步是因为无法解析到txAdvice这些对象
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 在开发的时候可以这样定义,但部署的时候一定要详细定义 -->
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="search*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* services.impl.*.*(..))" />
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" />
</aop:config>
</beans>
二、 jbpm的配置文件
1、jbpm.cfg.xml
< jbpm-configuration >
< import resource =" jbpm.default.cfg.xml " />
< import resource =" jbpm.tx.spring.cfg.xml " /><!--jbpm.tx.hibernate.cfg.xml不用了,无需其他配置-->
< import resource =" jbpm.jpdl.cfg.xml " />
< import resource =" jbpm.bpmn.cfg.xml " />
< import resource =" jbpm.identity.cfg.xml " />
< import resource =" jbpm.businesscalendar.cfg.xml " />
</ jbpm-configuration >
三、 部署到Tomcat
整合struts2就没什么好讲的了,主要是spring和struts2整合,jbpm部署到tomcat6的时候,主要jar包冲突的问题,tomcat的lib里面的东西和项目lib里面的jar包版本等不一样的时候容易造成load到内存中的字节码出现乱七八糟的问题。
需要特别说明的是
1、WEB-INF/lib下面的三个jar包juel.jar,juel-engine.jar,juel-impl.jar剪切 到tomcat的lib下
2、在tomcat的lib中新加javaee.jar,重新部署,并启动tomcat,如果成功即可,不成功需要删除tomcat lib下的el-api.jar
3、有人数tomcat5下不会出现jar包冲突的情况,我不知道,没用过,我就不试了,哈哈
第二种方法: