4

GlassFish v3 で実行する必要がある Maven ベースの Java EE プロジェクトがあります。EJB サービスを注入する JSF ManagedBean があります。ManagedBean は、JPA 操作 (新しいエンティティ オブジェクトの作成、永続化、フラッシュ) が発生するボタン クリック時に、注入された EJB のメソッドの 1 つを呼び出します。がEntityManager.flush()呼び出されると、例外がスローされます。

Caused by: javax.persistence.TransactionRequiredException:  Exception
Description: No transaction is currently active

データ ソースは、JTA トランザクション タイプ (persistence.xml で定義) の jta データ ソースです。

すでに解決策を見つけましたが、展開の問題により満足のいくものではありません。次のコード行を persistence.xml に追加すると、問題なく実行されます。

<property name="eclipselink.target-server" value="SunAS9"/>

このため、eclipselink が JTA マネージャーを認識しない場合は、デプロイメントの問題であると思います。

任意の提案をいただければ幸いです、ありがとう!

アップデート:

@MRalwasser: これは完全なスタック トレースです。(申し訳ありませんが、実際のパッケージ名を削除する必要がありました。現在は masked.package.name です)pastebin のスタック トレース

@Chris: 申し訳ありませんが、GeneriDao クラスは、依存性注入ではなく、ファクトリ メソッドを介してエンティティ マネージャーを作成することを忘れていました。

4

2 に答える 2