0

Eclipse (Kepler) を使用しているときに、「jBPM を Web アプリケーションに統合」するのに問題がありました。テストとして、jBPM フル インストーラーの評価サンプルにあるコードを、Maven JavaEE6 Archetype によって生成されたテンプレート コードに複製しようとしています。問題を簡単に再現できるように、以下の手順をメモしました。

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 Central > Maven Project > "javaee6" でフィルタ ("myservlet" プロジェクトを作成): Archetype = jboss-javaee6-webapp すべてのデフォルトを受け入れる

3) src\main\resources\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 フル インストーラーから \runtime フォルダーを指定して、jBPM ランタイムを追加します。

5) jBPM パースペクティブを選択し、myservlet プロジェクトを右クリックして、[jBPM プロジェクトに変換] を選択します。

6) Java Build Path Entries > jBPM Library を Deployment Assembly に追加します。

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) この同じモジュールの register() に、これも評価サンプル コードから取得した以下を追加します。

 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();
}

6 つの jBPM WAR とともにデプロイすると、次のエラーが発生します: ... 原因: java.lang.IllegalArgumentException: JBAS011470: Persistence unitName was not specified and there are 2 persistence unit definitions in application deployment "myservlet.war" 持続性ユニット定義を 1 つだけ持つようにアプリケーションを変更するか、持続性ユニットへの参照ごとに unitName を指定してください。

デプロイされた myservlet フォルダー (jboss-as-7.1.1.Final\standalone\deployments\myservlet.war\WEB-INF\classes\META-INF にあります) のどこかに persistence.xml ファイルが 1 つだけあることを確認しました。 .

誰かがこのエラーの意味とそれを解消する方法を説明できますか?

4

1 に答える 1

0

私の推測では、構成されたすべての .xml のどこかで、明確ではない間違いを犯したと思います。私はそれがどれほどの苦痛になるかを知っています。JBoss AS を使用して JBPM の永続性を構成する方法に関する小さなチュートリアルをここに書きました。プロジェクトを再構成するには、ステップバイステップに従うことをお勧めします。

それがあなたの問題を解決することを願っています!

于 2013-10-22T15:02:51.793 に答える