3

jar 依存関係 (エンティティークラス、EJB リポジトリー、persistence.xml) としてパッケージ化された持続性ユニットを使用する Java-ee Web アプリケーションがあります。

Web アプリケーションの受け入れテストを実行するには、パッケージ化された persistence.xml のプロパティをオーバーライドする必要があります。具体的には、次のプロパティを設定して、デフォルトでアクティブな eclipselink共有オブジェクト キャッシュを無効にする必要があります。

<property name="eclipselink.cache.shared.default" value="false"/>

これが必要なのは、受け入れテストが dbunit を使用してデータベースを直接準備/クリーンアップするためです。これらの変更により、eclipselink キャッシュが失効状態になります (これらの変更には永続性ユニットが関与していないため)。

java-ee (または Glassfish 固有) で、jar にある persistence.xml のプロパティをオーバーライドする方法はありますか (テストの実行時にデプロイされる Web アプリケーションの war ファイルから開始)?

たとえば、テスト展開に固有のjar依存関係を構築するなど、他の方法があるかもしれませんが、このルートは、persistence.xmlの1つのプロパティのみをオーバーライドするため、複雑に思えます。

4

1 に答える 1

5

プロパティ マップを Persistence.createEntityManagerFactory() に渡すことができます。これを行うには、永続化コンテキストを自分で管理する必要があります (注入することはできません)。

もう 1 つのオプションは、プロパティを Java システム プロパティ (-D=) として設定することです。これは、persistence.xml の既存のプロパティをオーバーライドしませんが、プロパティが persistence.xml にない場合は機能します。

もう 1 つのオプションは、SessionCustomizer または SessionTuner を persistence.xml に配置して、実行時に独自のコードで構成を変更できるようにすることです。

于 2013-07-11T12:59:00.387 に答える