jbpm进程异常无法查找JNDI名称

时间:2015-04-29 13:55:37

标签: jbpm

我正在玩jbpm 6.1工具,在修改了Eclipse jbpm maven项目工具提供的示例后,我一直得到例外:

javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:59)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at com.sample.InitialClassKeySession.createRuntimeManager(InitialClassKeySession.java:62)
    at com.sample.InitialClassKeySession.<init>(InitialClassKeySession.java:47)
    at com.sample.InitialClassKeySession.startProcessInit(InitialClassKeySession.java:35)
    at com.sample.InitialClassKeySession.main(InitialClassKeySession.java:30)
Caused by: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:jboss/datasources/ExampleDS]
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68)
    at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1825)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1783)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
    ... 8 more
Caused by: javax.naming.NameNotFoundException: unable to find a bound object at name 'java:jboss/datasources/ExampleDS'
    at bitronix.tm.jndi.BitronixContext.lookup(BitronixContext.java:83)
    at bitronix.tm.jndi.BitronixContext.lookup(BitronixContext.java:67)
    at javax.naming.InitialContext.lookup(InitialContext.java:415)
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:65)
    ... 21 more

我花了很多时间在Google上搜索此问题,但无法找到解决此问题的任何方法。 我将persistence.xml添加到META-INF文件夹中。这是我的persistence.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence version="2.0"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                                 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd
                                 http://java.sun.com/xml/ns/persistence/orm 
                                 http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
             xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://java.sun.com/xml/ns/persistence">

  <persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <mapping-file>META-INF/JBPMorm.xml</mapping-file>
    <mapping-file>META-INF/Taskorm.xml</mapping-file>
   <mapping-file>META-INF/TaskAuditorm.xml</mapping-file>

    <class>org.drools.persistence.info.SessionInfo</class>
    <class>org.drools.persistence.info.WorkItemInfo</class>

    <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>

    <class>org.jbpm.persistence.correlation.CorrelationKeyInfo</class>
    <class>org.jbpm.persistence.correlation.CorrelationPropertyInfo</class>

    <class>org.jbpm.process.audit.ProcessInstanceLog</class>
    <class>org.jbpm.process.audit.NodeInstanceLog</class>
    <class>org.jbpm.process.audit.VariableInstanceLog</class>

    <class>org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo</class>

    <class>org.jbpm.services.task.impl.model.AttachmentImpl</class>
    <class>org.jbpm.services.task.impl.model.ContentImpl</class>
    <class>org.jbpm.services.task.impl.model.BooleanExpressionImpl</class>
    <class>org.jbpm.services.task.impl.model.CommentImpl</class>
    <class>org.jbpm.services.task.impl.model.DeadlineImpl</class>
    <class>org.jbpm.services.task.impl.model.DelegationImpl</class>
    <class>org.jbpm.services.task.impl.model.EscalationImpl</class>
    <class>org.jbpm.services.task.impl.model.GroupImpl</class>
    <class>org.jbpm.services.task.impl.model.I18NTextImpl</class>
    <class>org.jbpm.services.task.impl.model.NotificationImpl</class>
    <class>org.jbpm.services.task.impl.model.EmailNotificationImpl</class>
    <class>org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl</class>
    <class>org.jbpm.services.task.impl.model.PeopleAssignmentsImpl</class>
    <class>org.jbpm.services.task.impl.model.ReassignmentImpl</class>
    <class>org.jbpm.services.task.impl.model.TaskImpl</class>
    <class>org.jbpm.services.task.impl.model.TaskDataImpl</class>
    <class>org.jbpm.services.task.impl.model.UserImpl</class>

    <!-- class>org.jbpm.services.task.audit.impl.model.AuditTaskImpl</class-->
    <class>org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl</class>
    <class>org.jbpm.services.task.audit.impl.model.TaskEventImpl</class>

    <!-- class>org.jbpm.kie.services.impl.store.DeploymentStoreEntry</class-->

    <exclude-unlisted-classes>true</exclude-unlisted-classes>

    <properties>
      <property name="hibernate.max_fetch_depth" value="3"/>
      <property name="hibernate.hbm2ddl.auto" value="update" />
      <property name="hibernate.show_sql" value="false" />
      <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
      <property name="hibernate.id.new_generator_mappings" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

我正在尝试运行的java类如下:     package com.sample;

import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.runtime.manager.RuntimeManagerFactory;
import org.kie.api.runtime.process.ProcessInstance;
import org.kie.api.task.TaskService;

public class InitialClassKeySession {

               private static InitialClassKeySession variableKeySession = null;
               private static KieSession ksession = null;
               public static void main(String[] args) {
                   InitialClassKeySession.startProcessInit().startProcess(30); 
               }

               public  static InitialClassKeySession startProcessInit() {
                              if (variableKeySession == null)
                                            variableKeySession = new InitialClassKeySession();

                              return variableKeySession;
               }



               private InitialClassKeySession() {
                              KieServices ks = KieServices.Factory.get();
                              KieContainer kContainer = ks.getKieClasspathContainer();
                              KieBase kbase = kContainer.getKieBase("kbase");

                              RuntimeManager manager = createRuntimeManager(kbase);
                              RuntimeEngine engine = manager.getRuntimeEngine(null);
                              ksession = engine.getKieSession();

                              TaskService taskService = engine.getTaskService();


               }

               private static RuntimeManager createRuntimeManager(KieBase kbase) {
                                                           EntityManagerFactory emf = Persistence
                                                           .createEntityManagerFactory("org.jbpm.persistence.jpa");
                              RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory
                                                           .get().newDefaultBuilder().entityManagerFactory(emf)
                                                           .knowledgeBase(kbase);
                              return RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(
                                                           builder.get(), "com.sample:example:1.0");
               }

               public void startProcess(Integer temp) {
                              System.out.println("inside start process");
                              Map<String, Object> params = new HashMap<String, Object>();
                              params.put("Temperature", temp);
                              System.out.println("inside start process temperature =" + temp);
                              ProcessInstance pi = ksession.startProcess("com.sample.bpmn.hello",
                                                           params);
               }
}

我正在使用WildFly AS,但实际上我没有在服务器上运行这个应用程序,所以我不知道它是否达到AS的设置高峰。我正在Eclipse环境中运行它。如果我错过了分析所需的其他一些细节,请告诉我!

请你帮我解决这个问题!

提前多多感谢, 米拉

0 个答案:

没有答案