1
環境EJBは、オプションパッケージを見つけるため、持続性ユニット、それが
- のWebLogic 11gに(結果的には、Java EE 5とEJB 3.0)
- アンEJBは、すべての永続エンティティを保持しているJARを含まを中にすることはできません。それは正常に働いた(EJBを使用するWebアプリケーションを持っていて、期待どおりに動作する)。エンティティを別のレイヤーに分割することにしました。これを実行するために別のモジュールを作成し、オプションパッケージとして展開しました。だから、私は2つのJARファイルを持っていますが、1つのアプリケーションの一部としてではなく別々にデプロイします。永続性JARおよびEJB JAR
問題
EJBの配備中、私は(オプションパッケージが見つからなかったことを私に伝えます)、次のエラーを取得:
EJBを展開することができません:BLayerからStocksBean -1.0.0-SNAPSHOT.jar:スコープ
BLayer-1.0.0-SNAPSHOT.jarで使用可能な永続ユニット「internalAppsPU」はありません。利用可能な永続性単位:[]
詳細永続化モジュールのJARのMETA-INFフォルダ内の
マニフェスト持続モジュールの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
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のコード
EJBのJARManifest-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
の
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 //
}
マニフェストには、次の点に注意してください:
- InternalAppsDSデータソースがWebLogicで以前に設定されています。
- ある時点で、エクステンションリストの名前は、オプションパッケージとしてデプロイされたJARファイルの名前と一致しなければならないという印象を受けました。しかし、私がもっと読むと、私はそれが正しいと分かりませんでした。
拡張名にcom.amir.persistenceを使用してみましたか? –
はい。それはそれだった。しばらく前にこれを修正して、今日あなたのコメントを見つけました。誰かが実際に反応したという通知はありませんでした。ありがとう。それは私にしばらく時間を節約してくれました。 –