2013-10-07 37 views
0

我一直在使用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)。

有人可以解釋這個錯誤意味着什麼以及如何消除它?

回答

0

我的猜測是,在所有那些配置.xml的地方,你犯了一些錯誤,這並不明顯。我知道a **可能會帶來多大的痛苦。我寫了一篇關於如何使用JBoss AS here配置JBPM持久性的小教程。我建議你按照步驟重新配置你的項目。

希望它能解決您的問題!

相關問題