免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10401 | 回复: 2
打印 上一主题 下一主题

JBPM4.3整合spring+hibernate 转记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-18 21:00 |只看该作者 |倒序浏览
一、spring的配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       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-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/s ... ing-context-3.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.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/test"/>
    <property name="user" value="root"/>
    <property name="password" value="cqsztt"/>
    <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>

<!--spring的配置文件有两处需要改动的地方,此为1:

     springHelper实现了ApplicationContextAware接口,springHelper可以从spring容器中获得ApplicationContext,

     然后springHelper可以利用ApplicationContext和jbpm.cfg.xml(jbpm的配置文件)一起生成伟大的processEngine。

    配置到这一步的时候,有些人就开始着急测试,多次碰壁后,有的高手居然想到了使用Spring 的IOC功能自己写个processEngin工厂

    ,大家都知道jbpm使用了hibernate,但如何将hibernate的sessionFactory注入给JBPM呢?莫及,继续往下看

-->
<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="com.travelsky.bravo.core.utils.AutoLoadSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />


<property name="mappingResources">
        <list>

            <!--此处为第二处需要修改的地方

               此处千万不要忘记了 ,这5个映射关系会在spring容器初始化的时候persistent到数据库中,如果没有,肯定会报exception

               写到这里我要说明下:看过jbpm有个关于hibernate配置的文件:jbpm.hibernate.cfg.xml,我这种写法就是要去掉这个文件,

               将spring + jbmp都使用一个Hibernate的配置,也就不会出现两个sessionFactory和两个database的情况了。有的同学可 发表不同的意见认为:将hibernate的配置信息写到一个单独的文件里,感觉清爽些。但是,无论如何,你总得在这个文件里配置sessionFactory吧,所以总得配置hibernate的东东,所以干脆写在一起,将来修改起来也方便,不需要打开两个文件,至于其他细节东西我就不到啰嗦了,到此,spring的配置文件就结束了。

            -->
            <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.Oracle10gDialect
     </prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="hibernate.format_sql">true</prop>
     <prop key="hibernate.cache.provider_class">
      org.hibernate.cache.EhCacheProvider
     </prop>
     <prop key="hibernate.cache.use_query_cache">true</prop>
    </props>
   </property>

</bean>

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

<!--事务管理的配置,不这么配置不影响ssh+jbpm整合-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
          <tx:method name="save" propagation="REQUIRED"/>
          <tx:method name="update" propagation="REQUIRED"/>
          <tx:method name="is*" read-only="true"/>
      </tx:attributes>
</tx:advice>
<aop:config>
      <aop:pointcut expression="execution(public * com.cqs.service.impl.*.*(..))" id="userServicePointcut"/>
      <aop:advisor advice-ref="txAdvice" pointcut-ref="userServicePointcut"/>
</aop:config>
<!--不影响ssh+jbpm整合-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
      <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

</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包冲突的情况,我不知道,没用过,我就不试了,哈哈


原文 http://hi.baidu.com/victorlin23/ ... 91ee8fd0581b65.html

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2010-07-21 15:02 |只看该作者
这玩意儿真的不好用。

不支持在客户端自己定义流程。

论坛徽章:
0
3 [报告]
发表于 2010-07-30 11:01 |只看该作者
你说的是流程定制吧,这个东西只是一个引擎.不是一个完整的解决方案
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP