2012-05-07 46 views
3

我想讓我的jBPM項目持久化。所以我用這個tutorial。 起初,我導入了所有需要的額外罐子(根據網站)。 我還添加了mysql-connector-java-5.1.20-bin.jar,因爲我想使用mysql作爲持久性存儲。jBPM持久性:無法構建EntityManagerFactory

之後,我添加了 「狀態」 代碼到我的項目:

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); 
} 

然後我加入到resources/META-INF文件jBPM.properties

persistence.datasource.name =的jdbc/jBPM的-DS

persistence.datasource.user =測試

persistence.datasource.pas劍=測試

persistence.datasource.url = JDBC:MySQL的://本地主機:3306/helpme

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

persistence.enabled =真

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

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

如果我現在運行始終存在以下異常(上ksession = JBPMHelper.newStatefulKnowledgeSession(kbase);)項目:

javax.persistence.PersistenceException:[PersistenceUnit:org.jbpm.persistence.jpa]無法建立的EntityManagerFactory

造成的:org.hibernate.HibernateException:無法找到數據源

產生的原因:javax.naming.NameNotFoundException:名稱JDBC是不是在這方面的約束

回答

1

我爲我的問題找到了解決方案。通常情況下,JBPMHelper負載jBPM的直接從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; 
} 

我更換了加載機制,現在它被裝載jBPM.properties正確:

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; 
} 

(改編自BartoszKP我的答案 - 感謝)

相關問題