之前一直报错,郁闷了很久:
[...]
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(Java Business Process Management 4)是一个开源的工作流管理系统,它提供了业务流程的建模、部署、执行和监控功能。Spring框架则是Java应用开发中的一个核心组件,主要负责依赖...
**标题:“jBPM4与Spring整合的2种方式”** **内容概述:** jBPM4是一款开源的工作流管理系统,它提供了业务流程管理(BPM)和工作流服务。而Spring是一个广泛应用的Java企业级应用框架,它简化了开发、配置和管理...
### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...
近期网上有人介绍jBPM4与Spring整合的2种方式,但没有人贴出代码,闲着无聊写了个例子,源码见附件,在WEBLOGIC下运行正常,事务由spring控制http://ip:7001/Spring/helloWorld.do
jbpm4是一款强大的业务流程...总的来说,jbpm4与Spring的集成可以提高流程管理的灵活性和可扩展性,使得开发者能够更好地管理和控制业务流程。在实际开发中,应充分理解并掌握上述知识点,以实现高效、稳定的流程应用。
Spring整合** Spring是一个全面的Java应用框架,它提供了依赖注入、AOP(面向切面编程)、事务管理等功能,极大地简化了企业级应用的开发。在Jbpm4.4中整合Spring,可以利用Spring的这些优势,比如将Jbpm的流程实例...
- `jbpm_03_for_ant部署.doc`:这个文档很可能是关于使用Ant构建工具来部署和运行JBPM5与Spring3整合应用的指南。Ant是Java项目常用的构建工具,可以编写XML配置文件来自动化编译、打包和部署过程。 - `jbpm_03_for_...
Spring与JBPM4的集成 Spring框架和JBPM4的集成是指将Spring框架与JBPM4业务流程管理系统集成,以便更好地管理业务流程和工作流程。这种集成可以提供更加灵活和高效的业务流程管理解决方案。 知识点1:为什么需要...
【jbpm与Spring集成】是企业级应用中常见的技术整合,旨在利用jbpm(Java Business Process Management)的流程管理能力,结合Spring框架的灵活服务管理,实现高效、可扩展的业务流程自动化。jbpm是一个开源的工作流...
jbpm4.3-spring2.5整合是一个关键的话题,涉及到企业级工作流管理系统Jbpm与Spring框架的集成。Jbpm是一个开源的工作流程管理(BPM)和业务规则管理系统,它允许开发者设计、执行、管理和监控业务流程。而Spring是...
【jbpm4+spring+hibernate】是一个集成示例,展示了如何将业务流程管理工具Jbpm4与Spring框架和Hibernate ORM库协同工作。这个示例主要关注于在企业级应用中实现工作流管理和数据持久化。让我们深入探讨这三个技术...
- **Spring JDBC/ORM**:简化数据库访问,支持JDBC和ORM框架如Hibernate,便于与JBPM的持久层集成。 - **Spring上下文**:提供应用上下文,管理JBPM和EXT的相关bean,实现组件的生命周期管理。 3. **EXT UI库**:...
jbpm5.4与Spring MVC的集成是企业级应用开发中的常见组合,它结合了jbpm(业务流程管理)的强大功能和Spring MVC的灵活控制层架构。以下将详细阐述这一集成涉及的关键知识点: 1. **jbpm5.4**:jbpm是一个开源的...
**JBPM4与SSH整合详解** 在企业级应用开发中,Spring(Struts2、Hibernate)集成,简称SSH,是常见的Java Web开发框架组合。它们分别负责控制层、视图层和持久层的处理,而JBPM4则是一个强大的工作流管理系统,用于...
jbpm4.4 ibatis-spring 整合
总的来说,"提前试用spring 集成 jbpm4"意味着你需要理解Spring框架和jbpm4 BPM平台的工作原理,学习如何在Spring环境中配置和使用jbpm4,以及如何设计和部署符合业务需求的工作流程。这个过程涵盖了数据库配置、...