2012-05-07 7 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 - спасибо)

Смежные вопросы