jbpm进程异常无法查找JNDI名称
我当时正在使用jbpm 6.1工具,在修改Eclipse jbpm maven项目工具提供的示例后,我不断遇到异常: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
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