1

環境

  • WebLogic 11g (結果として Java EE 5 および EJB 3.0)
  • EJB には、すべての永続エンティティも保持する JAR が含まれています。正常に動作しました (EJB を使用する Web アプリケーションがあり、期待どおりに動作します)。エンティティを別のレイヤーに分離することにしました。これを行うために、別のモジュールを作成し、それをオプション パッケージとしてデプロイしました。これで、2 つの JAR ファイルができました。ちなみに、これらは 1 つのアプリケーションの一部としてではなく、個別にデプロイします。持続性 JAR および EJB JAR。

問題

EJB のデプロイ中に次のエラーが表示されます (オプション パッケージが見つからなかったことを示しています)。

EJB をデプロイできません: BLayer-1.0.0-SNAPSHOT.jar からの StocksBean: スコープ
BLayer-1.0.0-SNAPSHOT.jar で使用できる「internalAppsPU」という名前の持続性ユニットはありません。利用可能な永続ユニット: []

より詳しい情報

永続性モジュールの JAR のマニフェスト

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: bm03043
Build-Jdk: 1.6.0_18
Extension-Name: com.amir.persistence
Implementation-Version: 1.0.0
Specification-Version: 1.6

永続性モジュールの JAR の META-INF フォルダー内の persistence.XML

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
    version="1.0">
    <persistence-unit name="internalAppsPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>InternalAppsDS</jta-data-source>
        <class>com.xx.persistence.Stock</class>
        <properties>
            <property name="eclipselink.logging.level" value="FINE" />
        </properties>
    </persistence-unit>
</persistence>

EJBのコード

package com.xx.bll;

// bunch of imports //

@Stateless(name="StocksBean", mappedName="Internal-BLayer-StocksBean")
public class StocksBean implements Stocks {

   @PersistenceContext(unitName = "internalAppsPU")
   private EntityManager em;

   // SNIP //
}

EJB の JAR のマニフェスト

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: bm03043
Build-Jdk: 1.6.0_18
Extension-List: PLayer
PLayer-Extension-Name: PersistenceLayer
PLayer-Implementation-Version: 1.0.0-SNAPSHOT
PLayer-Specification-Version: 1.6

次の点に注意してください。

  • InternalAppsDSデータ ソースは、WebLogic で事前にコンフィグレーションされています。
  • ある時点で、Extension-Listの名前は、オプション パッケージとしてデプロイされた JAR ファイルの名前と一致する必要があるという印象を受けました。しかし、読み進めるうちに、それは正しくないことがわかりました。
4

1 に答える 1

0

答えは、ライブラリで使用されているのと同じ拡張名を使用することです。

于 2012-07-11T18:47:30.617 に答える