转载:http://ceapet.com/blog/index.php?option=com_content&view=article&id=203:jbpmhibernate&catid=38:java&Itemid=64
我目前正在研究jbpm,在使用过程中发现,每次使用以下操作时Tomcat控制台输出大量信息,看样子是配置文件的加载信息。
jbpmConfiguration = JbpmConfiguration.parseResource("jbpm.cfg.xml");
jbpmContext = jbpmConfiguration.createJbpmContext();
configuration = new Configuration().configure();
每当执行一个页面请求时,配置文件似乎重新被加载了一次,导致一个页面花费很长时间才打开,而且java.exe的内存消耗直线上升,CPU也是100%,最后,java就报java.lang.OutOfMemoryError,页面无法打开。
这是什么原因呢,我刚学java,以为通过java垃圾回收机制可以解决java.lang.OutOfMemor[size=medium][/size]yError,试了半天也不见效果。后来,想想应该是配置文件加载的次数太多,能不能只加载一次呢?我看了jbpm-console在启动时,Tomcat控制台会有大量信息输出,当点击页面时,页面反应很快,而且后台也没有输出。我觉得这种方法可行。在网上寻找的事例中,基本上都是先创建jbpmContext,然后再 jbpmContext.close(),并没有那个人告诉你,真正的程序开发中,这种代码不可行。
我尝试着先创建一个类main.java,用来创建jbpmConfiguration、jbpmContext之类的对象,然后将这个类在faces- config.xml中设置成application。其它类药要使用jbpmContext的时候,直接调用new main().jbpmContext。这样的一个设想,居然解决了我的问题,cpu不再100%,java.exe的内存消耗不再直线攀升到 390M,Tomcat控制台不再有大量信息输出,真是爽啊。
我的main.java是这样写的:
package qdcm.jbpm;
import org.hibernate.cfg.*;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.db.TaskMgmtSession;
public class main
{
public static JbpmContext jbpmContext;
public static JbpmConfiguration jbpmConfiguration;
public static Configuration configuration;
public static Session session;
public static SessionFactory sessionFactory;
public static GraphSession graphSession;
public static TaskMgmtSession taskMgmtSession;
public main()
{
//Jbpm Configuration
if(this.jbpmConfiguration == null)
{
jbpmConfiguration = JbpmConfiguration.parseResource("jbpm.cfg.xml");
}
if(this.jbpmContext == null)
{
jbpmContext = jbpmConfiguration.createJbpmContext();
}
if(this.graphSession == null)
{
graphSession = jbpmContext.getGraphSession();
}
if(this.taskMgmtSession == null)
{
taskMgmtSession = jbpmContext.getTaskMgmtSession();
}
//Hibernate Configuration
if(this.configuration == null)
{
configuration = new Configuration().configure();
}
if(this.sessionFactory == null)
{
sessionFactory = configuration.buildSessionFactory();
}
if(this.session == null)
{
session = sessionFactory.openSession();
}
};
}
在product.java中这样使用:
tasks = new main().taskMgmtSession.findTaskInstancesByProcessInstance(pi);
Query query = new main().session.getNamedQuery("getAllProduct");
希望我的这个发现,可以帮助你解决类似的问题。
分享到:
相关推荐
本篇文章将深入解析jbpm中的两个主要配置文件:jbpm.hibernate.cfg.xml和jbpm.cfg.xml。 首先,我们来看`jbpm.hibernate.cfg.xml`文件。这个名字表明它是与Hibernate ORM(对象关系映射)相关的配置,Hibernate是...
4. **创建数据库表**:使用修改后的配置文件运行jbpm,它会根据配置自动创建包含jbpm工作流表的数据库。 5. **安装Eclipse图形化插件**:安装jbpm的Eclipse插件,便于图形化设计和管理流程定义。 6. **部署jbpm和...
3. **Hibernate会话工厂**:配置`LocalSessionFactoryBean`,并指定Hibernate配置文件的位置。 ```xml class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> ...
jbpm.hibernate.cfg.xml是工作流引擎是依靠自身的一些数据库的,这个就是数据库相关的配置信息,因为JBPM底层就是引用了Hibernate来做持久层维护的,所以此文件就是Hibernate配置文件。 知识点4:JPDL4 schema效验 ...
需要注意的是,由于 Hibernate 和 Spring 的整合,`hibernate.cfg.xml` 文件中的许多配置转移到了 Spring 配置文件中,但仍可以保留部分 Hibernate 相关的配置,如日志显示、自动建表策略和方言设置。 **相关 jar ...
在整合其他组件时,Spring通常通过XML配置文件或Java配置来定义Bean的创建和依赖关系。 1. **Spring与JBPM整合**: JBPM是一个开源的工作流和业务流程管理系统,用于处理业务流程自动化。在Spring中集成JBPM,你...
JbpmConfiguration类用于获取jbpm配置,例如通过getInstance方法加载jbpm.cfg.xml配置文件。JbpmContext类提供了一系列方法来管理流程定义的部署、获取任务列表、加载任务实例、创建新流程实例、获取会话等。 流程...
- **jbpm.hibernate.cfg.xml**:这是Hibernate配置文件,用于配置工作流引擎所需的数据库连接和持久化逻辑。示例配置如下: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate ...
通常,这样的项目结构会包括以下几个部分:源代码目录(src/main/java)、资源目录(src/main/resources)、Web应用目录(src/main/webapp)、Maven或Gradle构建文件、以及可能的测试代码和配置文件。 在整合过程中...
它通过Action和ActionForm类来处理用户输入,然后通过配置文件(struts-config.xml)定义视图与控制器之间的关系,使得前端与后端逻辑解耦。 Spring框架则更加强调控制反转(IOC)和面向切面编程(AOP)。IOC使得...
在配置中,`context-param`用于指定Spring配置文件的位置,例如`applicationContext-resources.xml`、`applicationContext-dao.xml`和`WEB-INF/applicationContext.xml`。`CharacterEncodingFilter`用于确保所有HTTP...
- 修改 `jbpm.hibernate.cfg.xml` 文件,配置 MySQL 数据库连接信息。例如: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" ...
Starter Kit 包含了快速启动 jBPM 所需的一切资源,包括示例项目、文档和配置文件等。这对于新手来说是很好的入门材料。 **1.3. JBoss jBPM 图形化流程设计器** 该设计器允许用户以直观的方式创建流程图,并将其...
`JbpmConfiguration`和`SpringConfiguration`实现了`org.jbpm.api.Configuration`接口,使得可以从配置文件中加载并创建`ProcessEngine`。 5. **org.jbpm.api.client**: 提供客户端API,如`ClientExecution`、`...
这个压缩包文件"ssh-jbpm"很可能包含了一个完整的示例项目,包括源代码、配置文件和可能的数据库脚本。如果需要深入理解SSH-JBPM整合的细节,建议下载并研究这些文件,尤其是Spring的配置文件、Struts2的动作类、...
1. **.classpath** - 这个文件是Eclipse项目的一个配置文件,包含了项目的类路径设置,指示了编译器和运行时环境如何查找和加载项目中的类和其他资源。 2. **style.css** - 这是CSS样式表,用于定义网页的布局和...
这些服务可以通过配置文件进行定制,增强了jbpm的灵活性。 9. **测试与调试**: 源码中包含了大量的单元测试,可以帮助理解代码功能,并验证其正确性。同时,学习源码时也可以参考这些测试用例来加深对jbpm机制的...