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

jbpm进程异常无法查找JNDI名称,jbpm,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(E

我当时正在使用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
javax.persistence.PersistenceException:[PersistenceUnit:org.jbpm.persistence.jpa]无法构建EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
位于org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:59)
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:63)
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:47)
在com.sample.InitialClassKeySession.createRuntimeManager(InitialClassKeySession.java:62)上
在com.sample.InitialClassKeySession上。(InitialClassKeySession.java:47)
在com.sample.InitialClassKeySession.startProcessInit上(InitialClassKeySession.java:35)
位于com.sample.InitialClassKeySession.main(InitialClassKeySession.java:30)
原因:org.hibernate.service.jndi.jndie异常:无法查找jndi名称[java:jboss/datasources/ExampleDS]
位于org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68)
位于org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116)
位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.buildJdbcConnectionAccess(jdbcservicesiml.java:223)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.configure(jdbcservicesiml.java:89)
位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
位于org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1825)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1783)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:96)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
... 8个以上
原因:javax.naming.NameNotFoundException:无法在名称“java:jboss/datasources/ExampleDS”处找到绑定对象
位于bitronix.tm.jndi.BitronixContext.lookup(BitronixContext.java:83)
位于bitronix.tm.jndi.BitronixContext.lookup(BitronixContext.java:67)
在javax.naming.InitialContext.lookup(InitialContext.java:415)
位于org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:65)
... 还有21个
我花了很多时间在谷歌上搜索这个问题,但没有找到任何解决这个问题的方法。 我将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>

org.hibernate.ejb.HibernatePersistence
java:jboss/datasources/examples
META-INF/JBPMorm.xml
META-INF/Taskorm.xml
META-INF/taskaditorm.xml
org.drools.persistence.info.SessionInfo
org.drools.persistence.info.WorkItemInfo
org.jbpm.persistence.processinstance.ProcessInstanceInfo
org.jbpm.persistence.correlation.CorrelationKeyInfo
org.jbpm.persistence.correlation.CorrelationPropertyInfo
org.jbpm.process.audit.ProcessInstanceLog
org.jbpm.process.audit.NodeInstanceLog
org.jbpm.process.audit.VariableInstanceLog
org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo
org.jbpm.services.task.impl.model.AttachmentImpl
org.jbpm.services.task.impl.model.ContentImpl
org.jbpm.services.task.impl.model.BooleanExpressionImpl
org.jbpm.services.task.impl.model.CommentImpl
org.jbpm.services.task.impl.model.DeadlineImpl
org.jbpm.services.task.impl.model.DelegationImpl
org.jbpm.services.task.impl.model.EscalationImpl
org.jbpm.services.task.impl.model.GroupImpl
org.jbpm.services.task.impl.model.I18NTextImpl
org.jbpm.services.task.impl.model.NotificationImpl
org.jbpm.services.task.impl.model.EmailNotificationImpl
org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl
org.jbpm.services.task.impl.model.peoplessignmentsiml
org.jbpm.services.task.impl.model.ReassignmentImpl
org.jbpm.services.task.impl.model.taskinpl
org.jbpm.services.task.impl.model.TaskDataImpl
org.jbpm.services.task.impl.model.UserImpl
org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl
org.jbpm.services.task.audit.impl.model.TaskEventImpl
真的
我尝试运行的java类如下所示: 包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);
               }
}
import java.util.HashMap;
导入java.util.Map;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.persistence;
导入org.kie.api.KieBase;
导入org.kie.api.KieServices;
导入org.kie.api.runtime.KieContainer;
导入org.kie.api.runtime.KieSession;
导入org.kie.api.runtime.manager.RuntimeEngine;
导入org.kie.api.runtime.manager.RuntimeEnvironmentBuilder;
导入org.kie.api.runtime.manager.RuntimeManager;
导入org.kie.api.runtime.manager.RuntimeManagerFactory;
导入org.kie.api.runtime.process.ProcessInstance;
导入org.kie.api.task.TaskService;
公共类InitialClassKeySession{
私有静态InitialClassKeySession变量KeySession=null;
私有静态会话ksession=null