我一直在使用Eclipse(開普勒)時將「jBPM集成到Web應用程序」中時遇到了麻煩。作爲一個測試,我只是試圖將jBPM Full Installer評估示例中的代碼複製到由Maven JavaEE6原型生成的模板代碼中。我已經注意到了下面的步驟,以便可以輕鬆地複製問題。在將jBPM 5.4集成到J2EE Web應用程序中時出現persistence.xml錯誤
1)添加到JBoss standalone.xml:
<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>
2)的JBoss中部> Maven項目>上 「javaee6」(製造的 「myservlet」 項目)濾波器: 原型= JBoss的-javaee6 -webapp 接受所有缺省設置
3)設置的src \主\資源\ META-INF \ persistence.xml中包含:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="primary">
<!-- If you are running in a production environment, add a managed
data source, the example data source is just for proofs of concept! -->
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<!-- Properties for Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
4)添加一個jBPM Runti我通過指向jBPM完整安裝程序的\ runtime文件夾。 5)選擇jBPM透視圖,右鍵單擊myservlet項目>轉換爲jBPM項目。
6)將Java Build Path Entries> jBPM Library添加到部署程序集。
7)在src \ main \ java \ com \ mycompany \ mywebapp \ controller中添加(任意選擇)MemberRegistration.java(它是作爲項目的一部分自動創建的)以下來自評估示例代碼:
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;
8)在這同一個模塊中,寄存器()添加這也來自於評估示例代碼如下:
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();
}
在沿與六jBPM的WAR中,我們得到這個錯誤部署: ... 導致: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)。
有人可以解釋這個錯誤意味着什麼以及如何消除它?