`

解决jbpm4.4和spring多数据源的问题【转】

 
阅读更多
采用官方的解决方案,在单数据源下没有问题,但是在多数据源下,我们采用jotm的jta事务,当在一个事务之内既有操作平台的服务,又有操作jbpm的 服务时,控制台上打印一下警告和错误。更为奇怪的是,如果在一个事务里先执行jbpm的数据库操作,在执行其他的数据操作,没有问题,反过来却不行,一头 雾水啊。难道jbpm搞不清楚是哪个sessionfactory了。经过Google和长时间的分析,解决了该问题,现把方案分享一下。
 
问题:
Multiple Spring beans found for type interface org.hibernate.SessionFactory returning the first one found
java.sql.SQLException: Cannot get connection for URL jdbc:oracle:thin ** 调用中无效的参数
 

一、扩展SpringHelper,添加setSessionFactory,指定sessionfactory注入

 
  1. public class ProcessEngineFactoryBean extends SpringHelper {
  2.  
  3. protected SessionFactory sessionFactory;
  4.  
  5. public void setSessionFactory(SessionFactory sessionFactory) {
  6. this .sessionFactory = sessionFactory;
  7. }
  8.  
  9. public ProcessEngine createProcessEngine() {
  10. processEngine = new ConfigurationImpl().springInitiated(
  11. applicationContext).setResource(jbpmCfg)
  12. .setHibernateSessionFactory(sessionFactory)
  13. .buildProcessEngine();
  14. return processEngine;
  15. }
  16.  
  17. }

 

  1. <!-- jbpm配置 cn.oecp.jbpm4.cfg.pvm.ProcessEngineFactoryBean上面已经定义-->
  2. <bean id="springHelper" class = "com.dawn.jbpm4.cfg.pvm.ProcessEngineFactoryBean" >
  3. <property name="jbpmCfg" value= "com/dawn/jbpm4/cfg/jbpm.cfg.xml" ></property>
  4. <property name="sessionFactory" >
  5. <ref local="sessionFactory-jbpm" />
  6. </property>
  7. </bean>
 

二、其他配置省略,修改了 jbpm.tx.spring.cfg.xml中 spring事务拦截方式,这一步很关键,保证在一个事务管理器内

 

 
  1. <?xml version= "1.0" encoding= "UTF-8" ?>
  2.  
  3. <jbpm-configuration spring="enabled" >
  4.  
  5. <process-engine-context>
  6.  
  7. <command-service name="newTxRequiredCommandService" >
  8. <retry-interceptor />
  9. <environment-interceptor policy="requiresNew" />
  10. <spring-transaction-interceptor policy="requiresNew" />
  11. </command-service>
  12.  
  13. <!-- Default command service has a Spring transaction interceptor-->
  14. <command-service name="txRequiredCommandService" >
  15. <retry-interceptor />
  16. <environment-interceptor />
  17. <spring-transaction-interceptor transaction-manager="transactionManager-jbpm" />
  18. </command-service>
  19.  
  20. </process-engine-context>
  21.  
  22. <transaction-context>
  23. <transaction type="spring" />
  24. <hibernate-session current="true" />
  25. </transaction-context>
  26.  
  27. </jbpm-configuration>

三、配置jbpm完成,但是依然出现java.sql.SQLException: Cannot get connection for URL jdbc:oracle:thin ** 调用中无效的参数的错误

 

google了一圈,最后找到了答案,在配置数据源的时候,StandardXAPoolDataSource中要配置user和password,StandardXADataSource中也要配置user和password。真是好奇怪,搞了一天终于解决了。

分享到:
评论

相关推荐

    Jbpm4.4 整合Spring Hibernate4

    在Jbpm4.4中整合Spring,可以利用Spring的这些优势,比如将Jbpm的流程实例管理、任务分配等操作集成到Spring容器中,实现流程服务的声明式配置和管理。 **3. Hibernate4整合** Hibernate4是流行的ORM(对象关系映射...

    jbpm4.4+ssh

    【jbpm4.4+SSH】是一个集成的Java企业级应用框架,主要涉及的是工作流管理系统jbpm4.4与Spring、Struts2(SSH)三大框架的整合。jbpm4是一个开源的工作流程管理系统,它提供了流程定义、执行、监控和优化等一系列...

    jbpm-4.4.zip part03

    【jbpm-4.4.zip part03】这个压缩文件是关于jbpm 4.4版本的组成部分,jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了业务流程建模、部署、执行和监控的功能。jbpm 4.4是该系统的一...

    jbpm4.4 ssh 整合

    1. **配置Spring**:首先,在Spring配置文件中添加JBPM的相关bean,如流程引擎工厂(ProcessEngineFactoryBean)、数据源(DataSource)和任务服务(TaskService)等。这一步确保Spring能够管理并初始化JBPM所需的...

    jbpm4.4整合ssh代码

    1. **Spring集成**: 集成jbpm4.4到Spring中,可以利用Spring的依赖注入和事务管理,使流程服务的调用更加灵活和可控。 2. **Struts配置**: 在Struts中添加jbpm的控制器,以便通过HTTP请求触发流程的开始、结束或...

    jBPM4.4Pssh.rar_jbpm-4.4_ssh jbpm_工作流OA

    在本压缩包 "jBPM4.4Pssh.rar" 中,重点是将 jbPM 4.4 与 SSH(Struts、Spring 和 Hibernate)框架整合的示例。SSH 是 Java Web 开发中常见的三大框架,它们分别负责视图层、业务层和数据持久层的管理。 Struts 是...

    jbpm4.4项目测试源码下载,

    - **社区资源**:CSDN博客、Stack Overflow等社区中有很多开发者分享的jbpm4.4实战经验和技术解答。 - **案例研究**:分析和模仿现有的jbpm项目,加深对工作流管理的理解。 通过下载并研究jbpm4.4的测试源码,...

    ssh_jbpm4.4

    在SSH_JBPM4.4中,Spring主要负责管理对象的生命周期,包括SSH中的Action、Service、DAO等,以及JBPM的工作流引擎和服务。 3. **Hibernate框架**:Hibernate是一个强大的ORM(对象关系映射)工具,它简化了数据库...

    jBPM4.4+ssh 整合配置及完整实例

    同时,配置Hibernate,设置实体管理工厂和数据源。 3. **Struts配置**:定义Action类,处理用户请求,并调用业务层接口来启动或控制流程实例。 4. **Hibernate配置**:配置hibernate.cfg.xml,指定数据库连接信息,...

    jbpm4.4 demo

    【jbpm4.4 demo】是一个基于jbpm4.4版本的示例程序,由传智播客提供,主要用于展示和教学如何使用jbpm(Java Business Process Management)框架进行业务流程管理。jbpm是一个开源的工作流管理系统,它允许开发者...

    jbpm.4.4.jar

    jbpm-4.4.jar是JBoss Business Process Management (jbpm)框架的4.4版本的核心库文件。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和...此外,jbpm社区和文档是宝贵的资源,学习和解决问题时应充分利用。

    myeclipse的jBPM4.4整合ssh2.rar

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

    jBPM4.4与ssh整合

    2. **配置jBPM**:设置数据源、工作流引擎工厂,并配置流程实例的持久化策略。 3. **配置Spring**:在Spring配置文件中定义jBPM相关的bean,如流程定义加载器、任务服务等。 4. **创建业务服务**:在SSH的Service...

    JBPM4.4+SSH整合

    3. **配置jbPM**: 在Spring配置文件中,定义jbPM的数据源、事务管理器、流程引擎工厂等bean,以及相关的实体映射。 4. **集成Drools**: 如果需要使用规则引擎,需在Spring配置中添加Drools的配置,并确保Drools的...

    JBPM4.4+SSH2 业务流 绑定表单Demo

    【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...

    jbpm4.4+tomcat+s2sh

    3. 在Spring配置中定义流程执行服务(Process Engine Service),并配置数据源和事务管理。 4. 在业务逻辑中调用jBPM API启动、控制和查询流程实例。 整个jbpm4.4+tomcat+s2sh的组合为开发者提供了一个强大的平台,...

    jbpm4.4+ssh2 完整请假流程

    【jbpm4.4+SSH2 完整请假流程】是一个结合了业务流程管理(BPM)工具jbpm4.4与Spring、Struts、Hibernate(SSH2)框架的示例应用,用于演示如何在企业级Java应用中实现一个完整的请假流程。这个项目的核心是jbpm,一...

Global site tag (gtag.js) - Google Analytics