`

转:成功整合spring+hibernate+jbpm的applicationContext配置

 
阅读更多
http://www.4ucode.com/Study/Topic/217963
<?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">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/test</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value/>
        </property>
    </bean>
    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="mappingLocations">  
           <value>classpath*:/org/jbpm/**/*.hbm.xml</value>  
           </property>
        <property name="hibernateProperties">  
           <props>  
               <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
               <prop key="hibernate.hbm2ddl.auto">update</prop>
               <prop key="hibernate.jdbc.batch_size">0</prop>
           </props>
       </property> 
    </bean>
    <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>
    
    <!-- reading jBPM process definitions -->
    <bean id="websaleWorkflow1" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
        <property name="definitionLocation"    value="processdefinition.xml"/>
    </bean>
    <!-- jBPM configuration--> 
    <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="configuration" value="jbpm.cfg.xml"/>
        <property name="processDefinitions">
            <list>
                <ref local="websaleWorkflow1"/>
            </list>
        </property>
        <property name="createSchema" value="true"/>
    </bean>
    <!-- jBPM template -->
    <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
        <constructor-arg index="0" ref="jbpmConfiguration"/>
        <constructor-arg index="1" ref="websaleWorkflow1"/>
    </bean>

</beans>




其中
<property name="mappingLocations">  
           <value>classpath*:/org/jbpm/**/*.hbm.xml</value>  
           </property>

很关键,spring是不会通过jbpm找到hibernate.cfg.xml 的,需要手工设置。


另外一个:使用多数据源的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: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/schema/context/spring-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"
       default-autowire="byName" default-lazy-init="true">


    <context:annotation-config/>

    <context:component-scan base-package="org.jbpm.dao">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>

    <context:component-scan base-package="org.jbpm.service">
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

    <!-- =================================================================== -->
    <!-- AOP: Configuration and Aspects                                      -->
    <!-- =================================================================== -->
    <aop:config>
        <aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..))" order="0"/>
    </aop:config>

    <tx:advice id="txAdvice">
        <tx:attributes>
            <!-- Read-only commented out to make things easier for end-users -->
            <!-- http://issues.appfuse.org/browse/APF-556 -->
            <!--tx:method name="get*" read-only="true"/-->
            <!--<tx:method name="save*" propagation="REQUIRES_NEW"/>-->
            <!--<tx:method name="update*" propagation="REQUIRES_NEW"/>-->
            <!--<tx:method name="remove*" propagation="REQUIRES_NEW"/>-->
            <!--<tx:method name="get*" read-only="true"/>-->
            <!--<tx:method name="list*" read-only="true"/>-->
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

    <!-- Enable @Transactional support -->
    <!--<tx:annotation-driven/>-->

    <!-- Enable @AspectJ support -->
    <aop:aspectj-autoproxy/>

    <!-- Enable @Configured support -->
    <!--<aop:spring-configured/>-->

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>

    <bean id="basicdataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>


    <bean id="xadataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource"
          init-method="init" destroy-method="close">
        <property name="className" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
        <property name="uniqueName" value="jdbc/testDS1" />
        <property name="minPoolSize" value="1" />
        <property name="maxPoolSize" value="5" />
        <property name="allowLocalTransactions" value="true" />
        <property name="driverProperties">
            <props>
                <prop key="URL">${jdbc.url}</prop>
                <prop key="user">${jdbc.username}</prop>
                <prop key="password">${jdbc.password}</prop>
            </props>
        </property>
    </bean>


    <bean id="txManager"
          class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManager" ref="bitronixTransactionManager" />
        <property name="userTransaction" ref="bitronixTransactionManager" />
    </bean>

    <bean id="bitronixTransactionManager" factory-method="getTransactionManager"
          class="bitronix.tm.TransactionManagerServices" depends-on="xadataSource,txManager"
          destroy-method="shutdown" />

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="basicdataSource"/>
        <property name="persistenceUnitName" value="leaveJPA"/>
        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
                <property name="showSql" value="true" />
                <property name="generateDdl" value="false" />
            </bean>
        </property>
    </bean>

    <bean id="entityManagerFactoryJbpmPersistanceJpa" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="xadataSource" />
        <property name="persistenceUnitName" value="org.jbpm.persistence.jpa" />
        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
                <property name="showSql" value="true" />
                <property name="generateDdl" value="false" />
            </bean>
        </property>
    </bean>

    <bean id="entityManagerFactoryJbpmTask"  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="basicdataSource" />
        <property name="persistenceUnitName" value="org.jbpm.task" />
        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
                <property name="showSql" value="true" />

                <property name="generateDdl" value="false" />
            </bean>
        </property>
    </bean>


    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryJbpmPersistanceJpa"/>
    </bean>

    <bean id="taskTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryJbpmTask"/>
    </bean>

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>


    <!--<bean id="md5PasswordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder"/>-->

</beans>
分享到:
评论

相关推荐

    Struts+Hibernate+spring+jpa+lucene+jbpm+compass配置文件

    整合这些技术时,开发者通常会创建一个综合的配置文件体系,例如Spring的配置文件可以管理所有组件的依赖和配置,通过引入Struts、Hibernate、JPA、Lucene、JBPM和Compass的相关配置。这需要对每个框架的原理有深入...

    spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2收藏

    在构建企业级应用时,整合多个...整合这些框架后,开发人员可以利用它们的优势,如Spring的依赖注入和事务管理,Hibernate的数据持久化,Struts2的MVC结构,以及jbpm的流程管理能力,构建出高效、灵活的企业级应用。

    spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2配置方法

    在这个配置中,我们将探讨如何将这些框架集成在一起,创建一个基于Spring 2.5.4、Hibernate 3.2.6、Struts2和jbpm3.2.2的应用。 1. **Spring框架**: - Spring 2.5.4作为应用的核心容器,负责管理应用的bean(对象...

    精通eclipse整合web开发struts hibernate spring jbpm 第18章源代码(source )

    在本资源中,我们主要关注的是使用Eclipse集成开发环境(IDE)进行Web应用程序的开发,特别是集成Struts、Hibernate、Spring和JBPM这四个关键的技术框架。这四个框架是Java企业级应用开发中的核心组件,它们分别负责...

    jbpm4.3与spring整合

    通过上述步骤,我们可以成功地将JBPM 4.3与Spring框架进行整合。这种整合不仅能够充分利用Spring框架的强大功能,还能够更好地管理和控制业务流程。需要注意的是,随着技术的发展,JBPM后续版本可能会有一些变动,...

    jbpm4.3-spring2.5整合

    1. **配置Spring上下文**:创建或更新Spring配置文件(如 applicationContext.xml),在这里定义Jbpm所需的bean,如流程引擎工厂(ProcessEngineFactoryBean)、流程定义仓库(RepositoryService)、任务服务...

    jbpm 整合 ssh框架

    - **Spring配置**: 在Spring的配置文件(如applicationContext.xml)中添加jbpm的相关bean定义,包括SessionFactory、DataSource等。 - **Struts配置**: 更新struts-config.xml或struts2的配置文件,定义Action和...

    jBPM4与Spring整合的2种方式

    2. **配置事务处理**:修改`jbpm.tx.spring.cfg.xml`文件,将`standard-transaction-interceptor`改为`spring-transaction-interceptor`,并将`transaction`和`hibernate-session`设置为`current="true"`。...

    jbpm4.4spring.rar_jbpm4_jbpm4.4

    【描述】中的关键信息是"JBPM4.4与ssh的整合实例",这里的"ssh"通常指的是Struts、Spring和Hibernate这三个Java Web开发框架的组合。这个项目表明,开发者已经成功地将JBPM4.4集成到基于SSH的应用程序中,使得业务...

    jbpm4.3、ssh环境搭建

    本文将详细介绍如何在开发环境中安装并配置jBPM4.3以及SSH (Struts + Spring + Hibernate)框架。 #### 二、jBPM基础知识 在深入讨论环境搭建之前,我们需要先了解一些基础知识: 1. **UML 2.0 活动图**:jBPM采用...

    三大框架与jbpm整合环境

    在文件名列表中提到的"demo"可能是一个演示项目或者包含了一系列示例代码,用于展示如何将Spring、Hibernate、Struts与jbPM进行整合。这个"demo"可能会包括以下内容: 1. **项目结构**:一个典型的Maven或Gradle...

    ssh整合jbpm5.4

    例如,Struts2的struts.xml用于定义动作和结果,Spring的applicationContext.xml用于配置bean和事务管理,Hibernate的hibernate.cfg.xml用于设置数据库连接,而jbpm相关的配置文件(如jbpm.conf)则用于设定流程引擎...

    提前试用spring 集成 jbpm4

    5. **启动和控制流程**:使用Spring的ApplicationContext或ServiceLocator来获取jbpm4的服务,并启动、查询或控制工作流程实例。 6. **异常处理**:集成过程中可能会遇到各种异常,如数据不一致、流程定义错误等,...

    SSH整合JBPM4.4说明文档

    接下来,由于jbPM内部集成了Hibernate作为持久层框架,我们需要将Hibernate的配置整合到Spring的配置文件`applicationContext.xml`中。在项目classpath(通常是src目录)下,你需要创建一系列jbPM所需的配置文件,...

    myeclipse的jBPM4.4整合ssh2.rar

    【描述】"myeclipse的jBPM4.4整合ssh2" 指的是将jBPM这个强大的工作流管理系统与SSH2(Spring、Struts2和Hibernate的组合)相结合,构建一个完整的Java企业级应用。在MyEclipse环境下,这种整合有助于开发者更高效地...

Global site tag (gtag.js) - Google Analytics