jBPM持久性:无法构建EntityManagerFactory [英] jBPM Persistence: Unable to build EntityManagerFactory

查看:95
本文介绍了jBPM持久性:无法构建EntityManagerFactory的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让我的jBPM项目持久。因此,我使用了这个教程
起初,我导入了所有需要的附加罐子(根据网站)。
我还添加了 mysql-connector-java-5.1.20-bin.jar ,因为我想将mysql用作持久存储。



之后,我将有状态代码添加到我的项目中:

pre $知识库kbase = readKnowledgeBase名称);
StatefulKnowledgeSession ksession = null;
JBPMHelper.startH2Server();
JBPMHelper.setupDataSource();
if(ProcessManager.sessionId == -1){
ksession = JBPMHelper.newStatefulKnowledgeSession(kbase);
ProcessManager.sessionId = ksession.getId();
}
else {
ksession = JBPMHelper.loadStatefulKnowledgeSession(
kbase,
ProcessManager.sessionId);
}

然后我添加到 resources / META-INF 文件 jBPM.properties


persistence.datasource .name = jdbc / jbpm-ds

persistence.datasource.user = test

persistence.datasource.password = test



persistence.datasource.url = jdbc:mysql:// localhost:3306 / helpme



持久性.datasource.driverClassName = com.mysql.jdbc.Driver

persistence.enabled = true

persistence.persistenceunit .name = org.jbpm.persistence.jpa

persistence.persistenceunit.dialect = org.hibernate.dialect.MySQLDialect


如果我现在运行该项目,总是会出现以下异常(位于 ksession = JBPMHelper.newStatefulKnowledgeSession(kbase); ):


javax.persistence.PersistenceException:[PersistenceUnit:org.jbpm.persiste nce.jpa]无法构建EntityManagerFactory



引起:org.hibernate.HibernateException:找不到数据源

导致:javax.naming.NameNotFoundException:名称jdbc未在此上下文中绑定



解决方案

我为我的问题找到了解决方案。通常 JBPMHelper 直接从 jar

  public静态属性getProperties(){
属性properties = new Properties();
尝试{
属性
.load(JBPMHelper.class.getResourceAsStream(/ jBPM.properties));
} catch(Throwable t){
//不做任何事,使用默认值
}

返回属性;
}

我替换了加载机制,现在它正在加载 jBPM.properties 正确:

  public static Properties getProperties(){
Properties properties = new Properties();
尝试{
InputStream输入
= new FileInputStream(./ resources / META-INF / jBPM.properties);
properties.load(input);
System.out.println(RPOP+ properties.toString());
} catch(Throwable t){
//不做任何事,使用默认值
}

返回属性;

$ / code>

(我的答案改编自BartoszKP - 谢谢)


I am trying to make my jBPM Project persistent. Therefore I used the this tutorial. At first I imported all the additional jars needed (according to the website). I also added mysql-connector-java-5.1.20-bin.jar because I want to use mysql as persistent storage.

After that I added the "stateful" code to my project:

KnowledgeBase kbase = readKnowledgeBase(name);
StatefulKnowledgeSession ksession = null;
JBPMHelper.startH2Server();
JBPMHelper.setupDataSource();
if(ProcessManager.sessionId == -1){
    ksession = JBPMHelper.newStatefulKnowledgeSession(kbase);
    ProcessManager.sessionId = ksession.getId();
}
else {
ksession = JBPMHelper.loadStatefulKnowledgeSession(
    kbase,
    ProcessManager.sessionId);
}

Then I added to resources/META-INF the file jBPM.properties:

persistence.datasource.name=jdbc/jbpm-ds

persistence.datasource.user=test

persistence.datasource.password=test

persistence.datasource.url=jdbc:mysql://localhost:3306/helpme

persistence.datasource.driverClassName=com.mysql.jdbc.Driver

persistence.enabled=true

persistence.persistenceunit.name=org.jbpm.persistence.jpa

persistence.persistenceunit.dialect=org.hibernate.dialect.MySQLDialect

If I now run the project there is always the following exception (on ksession = JBPMHelper.newStatefulKnowledgeSession(kbase);):

javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa] Unable to build EntityManagerFactory

Caused by: org.hibernate.HibernateException: Could not find datasource

Caused by: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

解决方案

I found a solution for my Problem. Normally the JBPMHelper loads the jBPM directly from the jar:

public static Properties getProperties() {
    Properties properties = new Properties();
    try {
        properties
            .load(JBPMHelper.class.getResourceAsStream("/jBPM.properties"));
    } catch (Throwable t) {
    // do nothing, use defaults
    }

    return properties;
}

I replaced the loading Mechanism and now it is loading the jBPM.properties correctly:

public static Properties getProperties() {
    Properties properties = new Properties();
    try {
        InputStream input
            = new FileInputStream("./resources/META-INF/jBPM.properties");
        properties.load(input);
        System.out.println("RPOP"+properties.toString());
    } catch (Throwable t) {
    // do nothing, use defaults
    }

    return properties;
}

(My answer adapted from BartoszKP - thanks)

这篇关于jBPM持久性:无法构建EntityManagerFactory的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆