Maven 将jBPM 5.4集成到J2EE web应用程序时获取persistence.xml错误
在使用Eclipse(开普勒)时,我很难将“jBPM集成到web应用程序中”。作为测试,我只是尝试将jBPM完整安装程序的评估样本中的代码复制到Maven JavaEE6原型生成的模板代码中。我已经记下了下面的步骤,以便很容易地重现问题 1) 添加到JBoss standalone.xml:Maven 将jBPM 5.4集成到J2EE web应用程序时获取persistence.xml错误,maven,jboss,jbpm,Maven,Jboss,Jbpm,在使用Eclipse(开普勒)时,我很难将“jBPM集成到web应用程序中”。作为测试,我只是尝试将jBPM完整安装程序的评估样本中的代码复制到Maven JavaEE6原型生成的模板代码中。我已经记下了下面的步骤,以便很容易地重现问题 1) 添加到JBoss standalone.xml: <datasource jndi-name="java:jboss/jdbc/jbpm-ds" pool-name="jBPMDS" enabled="true" use-java-context="
<datasource jndi-name="java:jboss/jdbc/jbpm-ds" pool-name="jBPMDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
8) 在同一模块中,在register()中添加以下内容,这些内容也来自评估示例代码:
import java.util.HashMap;
import java.util.Map;
import org.drools.KnowledgeBase;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.jbpm.process.workitem.wsht.HornetQHTWorkItemHandler;
try {
// load up the knowledge base
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Evaluation.bpmn"), ResourceType.BPMN2);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
HornetQHTWorkItemHandler humanTaskHandler = new HornetQHTWorkItemHandler(ksession);
humanTaskHandler.setIpAddress("127.0.0.1");
humanTaskHandler.setPort(5153);
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", humanTaskHandler);
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, "test", 1000);
// start a new process instance
Map<String, Object> params = new HashMap<String, Object>();
params.put("employee", "krisv");
params.put("reason", "Yearly performance evaluation");
ksession.startProcess("com.sample.evaluation", params);
System.out.println("Process started ...");
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
试试看{
//加载知识库
KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();
添加(ResourceFactory.newClassPathResource(“Evaluation.bpmn”)、ResourceType.BPMN2);
KnowledgeBase kbase=kbuilder.newKnowledgeBase();
StatefulKnowledgeSession ksession=kbase.newStatefulKnowledgeSession();
HornetQHTWorkItemHandler humanTaskHandler=新的HornetQHTWorkItemHandler(ksession);
humanTaskHandler.setIpAddress(“127.0.0.1”);
humanTaskHandler.setPort(5153);
ksession.getWorkItemManager().registerWorkItemHandler(“人工任务”,humanTaskHandler);
KnowledgeRuntimeLogger logger=KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession,“test”,1000);
//启动一个新的流程实例
Map params=新的HashMap();
参数put(“雇员”、“克里斯夫”);
参数put(“原因”、“年度绩效评估”);
ksession.startProcess(“com.sample.evaluation”,params);
System.out.println(“进程已启动…”);
logger.close();
}捕获(可丢弃的t){
t、 printStackTrace();
}
在与六场jBPM战争一起部署时,我们会遇到以下错误:
...
原因:java.lang.IllegalArgumentException:JBAS011470:未指定持久性单元名称,并且应用程序部署“myservlet.war”中有2个持久性单元定义。将应用程序更改为只有一个持久性单元定义,或者为对持久性单元的每个引用指定unitName
我已经确认,已部署的myservlet文件夹中的任何位置都有一个persistence.xml文件(它位于jboss-as-7.1.1.Final\standalone\deployments\myservlet.war\WEB-INF\classes\META-INF中)
有人能解释一下这个错误是什么意思以及如何消除它吗?我猜在所有配置的.xml文件中,您都犯了一些不太清楚的错误。我知道那会是多么痛苦。我已经编写了一个关于如何使用JBoss AS为JBPM配置持久性的小教程。我建议您一步一步地重新配置您的项目 希望它能解决你的问题
try {
// load up the knowledge base
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Evaluation.bpmn"), ResourceType.BPMN2);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
HornetQHTWorkItemHandler humanTaskHandler = new HornetQHTWorkItemHandler(ksession);
humanTaskHandler.setIpAddress("127.0.0.1");
humanTaskHandler.setPort(5153);
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", humanTaskHandler);
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, "test", 1000);
// start a new process instance
Map<String, Object> params = new HashMap<String, Object>();
params.put("employee", "krisv");
params.put("reason", "Yearly performance evaluation");
ksession.startProcess("com.sample.evaluation", params);
System.out.println("Process started ...");
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}