之前一直报错,郁闷了很久:
[...]
nested exception is org.hibernate.MappingException: Unknown entity: org.jbpm.pvm.internal.id.PropertyImpl
at
[...]
但是,该类的hibernate映射文件是写在jar包里面的。Hibernate为何没有解析到这个配置文件,不得而知。查看jbpm.hibernate.cfg.xml文件:
<mapping resource="jbpm.repository.hbm.xml" />
<mapping resource="jbpm.execution.hbm.xml" />
<mapping resource="jbpm.history.hbm.xml" />
<mapping resource="jbpm.task.hbm.xml" />
<mapping resource="jbpm.identity.hbm.xml" />
PropertyImpl的映射就在第一个被引入进来的文件当中,可以猜想到,其实整个的jbpm.hibernate.cfg.xml文件都没有Hibernate找到。
查看两种事务控制方式对应的配置文件jbpm.tx.spring.cfg.xml和jbpm.tx.hibernate.cfg.xml,发现后者会默认地去读classpath中的jbpm.hibernate.cfg.xml文件,而使用spring的时候却没有这样的操作(在applicationContext.xml文件中配置嘛)。
另外,在查看源码的时候,到处可见的是默认配置"jbpm.cfg.xml":
/**
* @author Joram Barrez
*/
public class SpringHelper implements ApplicationContextAware {
protected ApplicationContext applicationContext;
protected String jbpmCfg = "jbpm.cfg.xml";
...
却看不到jbpm.hibernate.cfg.xml的默认值。jbpm的配置文件设计思想逐渐明晰:
总的配置从jbpm.cfg.xml开始,你可以更改这个文件以便使用自己的事务控制方式。
如果使用的是hibernate的事务控制,那么你就得提供好jbpm.tx.hibernate.cfg.xml文件,并做好配置。如果使用的是spring的事务控制,只需要在jbpm.cfg.xml文件中切换到spring中即可,其他的关于数据库连接信息,sessionFactory等等由你自己到applicationContext文件中配置即可。
以下是在applicationContxt.xml文件中配置的关于jbpm信息:
<!-- 业务系统 -->
<bean id="crmSessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="crmDataSource" />
<!-- 引入外部配置文件,将jbpm和CRM的配置信息放到一起 -->
<property name="configLocation" value="classpath:jbpm.hibernate.cfg.xml"></property>
<!-- 扫描指定目录下的所有实体属性映射配置文件 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/cn/chinacti/crm/entity</value>
</list>
</property>
</bean>
如此,我的问题得以解决。
道理很简单,以后记得,与Spring 集成,那么所有的数据库信息都应该从applicationContext.xml配置出发,而不应让集成进来的组件自己去找自己的配置文件。
- 大小: 17.5 KB
分享到:
相关推荐
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
jBPM4与Spring整合的2种方式,JBPM技术现在已经不是最好最新的了,随着国人对工作流理解的深入,现在厂商普遍自己设计开发工作流引擎。
jbpm4.3与spring整合的一个小文档
近期网上有人介绍jBPM4与Spring整合的2种方式,但没有人贴出代码,闲着无聊写了个例子,源码见附件,在WEBLOGIC下运行正常,事务由spring控制http://ip:7001/Spring/helloWorld.do
jbpm4 集成 spring 的试用代码 spring2.5 hibernate3.3 jbpm4 beta1 后的svn版本
jbpm 4.3 与 spring 集成
JBPM4.4+spring+ext整合
jbpm与spring集成开发指南,描述了jbpm与spring开发过程。
jbpm4.4 ibatis-spring 整合
NULL 博文链接:https://1960370817.iteye.com/blog/2392653
spring与jbpm的集成包(符集成方法)
JBPM与Spring集成开发指南.docx
整合的jbpm4的spring、hibernate的网上的请假的例子。由于lib包太大,需要自己添加lib下的jar包
jbpm5.4 spring mvc 集成开发 Jetty maven JTA 事务等配置!
介绍JBPM基本内容和与Spring集成关键点。文章没有排版,但内容很有价值。
JBPM5+Spring+Hibernate+MySQL 请假例子
Spring与JBPM4的集成
现在流行抱大腿,不过对眼光的要求也高。...下面分别讨论:一、 通过Spring暴露服务还记得在jBPM4的运行期环境里提到的JbpmConfiguration吗?它是整个jBPM4的入口,并且是整个应用独此一份的。通过它可