2013-10-07 36 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持久性的小教程。我建议你按照步骤重新配置你的项目。

希望它能解决您的问题!

相关问题