jbpm和spring、hibernate的集成

先说一下问题,我在整合时,用junit测试的时候拿不到spring注入的对象

JbpmTemplate jbpmTemplate = JbpmService.getJbpmTemplate();   jbpmTemplate 为空

但是通过springmvc去访问时我却可以拿到(proxool我用junit测的时候也有这种情况)

看了下spring 的上下文context,

Spring在代码中获取bean的几种方式:http://www.dexcoder.com/selfly/article/326

spring要获取bean都要通过context  获取bean,如:
方法五:实现接口ApplicationContextAware

说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。

我的是在xml里以ref注入的,那就是直接调用方法spring不会给我们去注入

要看使用的是自动加载获取spring上下文还是手动加载获取spring上下文,如果是手动用编码方式加载spring的xml配置文件,那就可以用main里面运行,要是使用服务器已启动时自动加载spring配置文件,那就不能使用main方法了,
来深入理解下把web项目是由容器启动的。也就是服务器,tomcat之类,main方法是程序的入口。
web项目都把这些交给容器了
就比如说你A类里有个主函数,启动后调用B类的方法,这里你只要实例化B后就可以用了,你不会要求B也有主函数的。
A类相当于服务器的话,根据浏览器访问的路径,找到对应的B,执行完返回给浏览器。

spring 注入方式:http://blessht.iteye.com/blog/1162131


1、导入jbpm架包


2、配置jbpm默认配置文件jbpm.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>

  <import resource="jbpm.default.cfg.xml"/>
  <import resource="jbpm.businesscalendar.cfg.xml"/>
  <import resource="jbpm.tx.spring.cfg.xml"/>
  <import resource="jbpm.jpdl.cfg.xml"/>
  <import resource="jbpm.bpmn.cfg.xml"/>
  <import resource="jbpm.identity.cfg.xml"/>


  <!-- jbpm.hibernate.cfg.xml not found 错误,jbpm4.4默认的hibernate事务管理配置jbpm.tx.hibernate.cfg.xml,根据该配置,工作流引擎将会使用默认的配置文件jbpm.hibernate.cfg.xml (配置文件在jbpm.jar包下)。在将JBPM集成到Spring时,要使用Spring配置文件*.xml中的事务管理器,因此需要在jbpm.cfg.xml配置-->
  <process-engine-context>
    <string name="spring.cfg" value="../spring/*.xml" />
  </process-engine-context>

  <!-- Job executor is excluded for running the example test cases. -->
  <!-- To enable timers and messages in production use, this should be included. -->
  <!--
  <import resource="jbpm.jobexecutor.cfg.xml" />
  -->

</jbpm-configuration>


3、数据库连接用proxool 管理,datasource


4、spring的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<!-- 数据源配置 -->
<beans>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据源类采用JDBC数据源 -->
<property name="driverClassName">
<!-- 将数据库连接交给了proxool管理,使它的驱动 -->
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<!-- 数据库连接池的别名,与你的proxool.xml中的Alias必须一致 -->
<value>proxool.BaseConn</value>
</property>

</bean>


<!--初始化数据库连接,供webservice使用-->
<bean id="dbConnectPool" class="com.matech.framework.util.db.DBConnectPool">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>

       <!--hibernate 的配置-->
<bean id="hibernateProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<!-- 当你使用mysql的时候,jbpm使用的是org.hibernate.dialect.MySQLInnoDBDialect -->
<prop key="hibernate.dialect">
org.hibernate.dialect.OracleDialect
</prop>
<prop key="hibernate.connection.autoReconnect">true</prop> 
        <prop key="hibernate.connection.autoReconnectForPools">true</prop>
        <prop key="hibernate.connection.is-connection-validation-required">true</prop>
        <prop key="hibernate.release_mode">auto</prop> 
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.connection.release_mode">auto</prop>

</props>
</property>
</bean>


<!-- 集成hibernate配置 ,hibernate的属性、数据源和bean与数据表映射(下面的xml就是映射文件)的集成-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties" ref="hibernateProperties" />
<property name="mappingLocations">
<list>
<value>classpath:jbpm.repository.hbm.xml</value>
<value>classpath:jbpm.execution.hbm.xml</value>
<value>classpath:jbpm.history.hbm.xml</value>
<value>classpath:jbpm.task.hbm.xml</value>
<value>classpath:jbpm.identity.hbm.xml</value>
</list>
</property>
</bean>


<!-- 事务配置,必须 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="dataSource" ref="dataSource" />
<property name="sessionFactory" ref="sessionFactory" />
</bean>


<!-- jbpm配置 -->
<bean id="springHelper"
class="org.jbpm.pvm.internal.processengine.SpringHelper" />
<bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" />
<bean id="repositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<bean id="executionService" factory-bean="processEngine"
factory-method="getExecutionService" />
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />

<!-- jbpm模版配置,自定义了类去获取jbpm一些对象(get方法),在这里用spring注入(set方法)  -->
<bean id="jbpmTemplate"
class="com.matech.platform.service.process.JbpmTemplate">
<property name="processEngine" ref="processEngine"></property>
<property name="repositoryService" ref="repositoryService"></property>
<property name="executionService" ref="executionService"></property>
<property name="taskService" ref="taskService"></property>
<property name="historyService" ref="historyService"></property>
<property name="managementService" ref="managementService"></property>
</bean>


<bean id="jbpmServicce" class="com.matech.platform.service.process.JbpmServicce">
<property name="jbpmTemplate">
<ref bean="jbpmTemplate" />
</property>
</bean>


</beans>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值