`
aguest1151
  • 浏览: 14197 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

JBPM和Hibernate配置文件加载问题,如何只加载一次

    博客分类:
  • java
阅读更多
    转载: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");

希望我的这个发现,可以帮助你解决类似的问题。
分享到:
评论
1 楼 yuyue618 2010-03-11  
我也正在想这个问题

相关推荐

    jbpm核心配置文件

    本篇文章将深入解析jbpm中的两个主要配置文件:jbpm.hibernate.cfg.xml和jbpm.cfg.xml。 首先,我们来看`jbpm.hibernate.cfg.xml`文件。这个名字表明它是与Hibernate ORM(对象关系映射)相关的配置,Hibernate是...

    jbpm+ssh整合

    4. **创建数据库表**:使用修改后的配置文件运行jbpm,它会根据配置自动创建包含jbpm工作流表的数据库。 5. **安装Eclipse图形化插件**:安装jbpm的Eclipse插件,便于图形化设计和管理流程定义。 6. **部署jbpm和...

    jbpm 整合到现有的spring+hibernate系统

    3. **Hibernate会话工厂**:配置`LocalSessionFactoryBean`,并指定Hibernate配置文件的位置。 ```xml class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> ...

    JBPM4学习经验总结

    jbpm.hibernate.cfg.xml是工作流引擎是依靠自身的一些数据库的,这个就是数据库相关的配置信息,因为JBPM底层就是引用了Hibernate来做持久层维护的,所以此文件就是Hibernate配置文件。 知识点4:JPDL4 schema效验 ...

    jBPM4.4整合SSH2

    需要注意的是,由于 Hibernate 和 Spring 的整合,`hibernate.cfg.xml` 文件中的许多配置转移到了 Spring 配置文件中,但仍可以保留部分 Hibernate 相关的配置,如日志显示、自动建表策略和方言设置。 **相关 jar ...

    Spring整合JBPM、日志、数据库、ehcache的配置文件

    在整合其他组件时,Spring通常通过XML配置文件或Java配置来定义Bean的创建和依赖关系。 1. **Spring与JBPM整合**: JBPM是一个开源的工作流和业务流程管理系统,用于处理业务流程自动化。在Spring中集成JBPM,你...

    jbpm3.2开发总结.pdf

    JbpmConfiguration类用于获取jbpm配置,例如通过getInstance方法加载jbpm.cfg.xml配置文件。JbpmContext类提供了一系列方法来管理流程定义的部署、获取任务列表、加载任务实例、创建新流程实例、获取会话等。 流程...

    JBPM4学习经验总结第1季

    - **jbpm.hibernate.cfg.xml**:这是Hibernate配置文件,用于配置工作流引擎所需的数据库连接和持久化逻辑。示例配置如下: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate ...

    jbpm5 web整合例子

    通常,这样的项目结构会包括以下几个部分:源代码目录(src/main/java)、资源目录(src/main/resources)、Web应用目录(src/main/webapp)、Maven或Gradle构建文件、以及可能的测试代码和配置文件。 在整合过程中...

    ssh三大框架和jbpm工作流结合

    它通过Action和ActionForm类来处理用户输入,然后通过配置文件(struts-config.xml)定义视图与控制器之间的关系,使得前端与后端逻辑解耦。 Spring框架则更加强调控制反转(IOC)和面向切面编程(AOP)。IOC使得...

    spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2收藏

    在配置中,`context-param`用于指定Spring配置文件的位置,例如`applicationContext-resources.xml`、`applicationContext-dao.xml`和`WEB-INF/applicationContext.xml`。`CharacterEncodingFilter`用于确保所有HTTP...

    jbpm4.4的安装myeclipse配置还有helloworld实例

    - 修改 `jbpm.hibernate.cfg.xml` 文件,配置 MySQL 数据库连接信息。例如: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" ...

    jbpm3.1

    Starter Kit 包含了快速启动 jBPM 所需的一切资源,包括示例项目、文档和配置文件等。这对于新手来说是很好的入门材料。 **1.3. JBoss jBPM 图形化流程设计器** 该设计器允许用户以直观的方式创建流程图,并将其...

    JBPM4 java源代码分包详解JBPM4

    `JbpmConfiguration`和`SpringConfiguration`实现了`org.jbpm.api.Configuration`接口,使得可以从配置文件中加载并创建`ProcessEngine`。 5. **org.jbpm.api.client**: 提供客户端API,如`ClientExecution`、`...

    ssh-jbpm整合

    这个压缩包文件"ssh-jbpm"很可能包含了一个完整的示例项目,包括源代码、配置文件和可能的数据库脚本。如果需要深入理解SSH-JBPM整合的细节,建议下载并研究这些文件,尤其是Spring的配置文件、Struts2的动作类、...

    jBPM4.1 workflow sample

    1. **.classpath** - 这个文件是Eclipse项目的一个配置文件,包含了项目的类路径设置,指示了编译器和运行时环境如何查找和加载项目中的类和其他资源。 2. **style.css** - 这是CSS样式表,用于定义网页的布局和...

    jbpm3.2.3 源码

    这些服务可以通过配置文件进行定制,增强了jbpm的灵活性。 9. **测试与调试**: 源码中包含了大量的单元测试,可以帮助理解代码功能,并验证其正确性。同时,学习源码时也可以参考这些测试用例来加深对jbpm机制的...

Global site tag (gtag.js) - Google Analytics