采用官方的解决方案,在单数据源下没有问题,但是在多数据源下,我们采用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注入
-
public
class
ProcessEngineFactoryBean
extends
SpringHelper {
-
-
protected
SessionFactory sessionFactory;
-
-
public
void
setSessionFactory(SessionFactory sessionFactory) {
-
this
.sessionFactory = sessionFactory;
-
}
-
-
public
ProcessEngine createProcessEngine() {
-
processEngine = new
ConfigurationImpl().springInitiated(
-
applicationContext).setResource(jbpmCfg)
-
.setHibernateSessionFactory(sessionFactory)
-
.buildProcessEngine();
-
return
processEngine;
-
}
-
-
}
-
<!-- jbpm配置 cn.oecp.jbpm4.cfg.pvm.ProcessEngineFactoryBean上面已经定义-->
-
<bean id="springHelper"
class
=
"com.dawn.jbpm4.cfg.pvm.ProcessEngineFactoryBean"
>
-
<property name="jbpmCfg"
value=
"com/dawn/jbpm4/cfg/jbpm.cfg.xml"
></property>
-
<property name="sessionFactory"
>
-
<ref local="sessionFactory-jbpm"
/>
-
</property>
-
</bean>
二、其他配置省略,修改了
jbpm.tx.spring.cfg.xml中
spring事务拦截方式,这一步很关键,保证在一个事务管理器内
-
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
-
-
<jbpm-configuration spring="enabled"
>
-
-
<process-engine-context>
-
-
<command-service name="newTxRequiredCommandService"
>
-
<retry-interceptor />
-
<environment-interceptor policy="requiresNew"
/>
-
<spring-transaction-interceptor policy="requiresNew"
/>
-
</command-service>
-
-
<!-- Default command service has a Spring transaction interceptor-->
-
<command-service name="txRequiredCommandService"
>
-
<retry-interceptor />
-
<environment-interceptor />
-
<spring-transaction-interceptor transaction-manager="transactionManager-jbpm"
/>
-
</command-service>
-
-
</process-engine-context>
-
-
<transaction-context>
-
<transaction type="spring"
/>
-
<hibernate-session current="true"
/>
-
</transaction-context>
-
-
</jbpm-configuration>
三、配置jbpm完成,但是依然出现java.sql.SQLException: Cannot get connection for URL jdbc:oracle:thin ** 调用中无效的参数的错误
google了一圈,最后找到了答案,在配置数据源的时候,StandardXAPoolDataSource中要配置user和password,StandardXADataSource中也要配置user和password。真是好奇怪,搞了一天终于解决了。
分享到:
相关推荐
JBPM4.4+spring+ext整合
jbpm4.4 ibatis-spring 整合
Spring+hibernate4+SpringMVC+Jbpm4.4 。Jbpm 4.4 整合 spring,数据库是mysql,hibernate大版本是4。供以后参考使用
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
jbpm4.4下载地址
jBPM4.4开发指南 开发手册 JBPM4.4 开发
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
jbpm4.4整合spring2.5(ibatis与hibernate全整合)
Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合 超级详细的文档,透彻讲解JBPM与SSH的整合过程
NULL 博文链接:https://1960370817.iteye.com/blog/2392653
JBPM4.4与ssh的整合实例,可以直接运行。
jBPM4.4入门开发实例
JBPM4.4工作流数据表结构的详解 对每个数据表字段都有注释
jbpm4.4开发指南,jbpm4.4用户指南
jBPM4.4课程文档
JBPM4.4之HelloWorld示例
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...
JBPM4.4学习文档.ppt