2012-02-15 5 views
2

私はJPAアプリケーションを同じglassfish 3ドメイン内の別々の2つのインスタンスにデプロイしようとしています。 どちらのインスタンスも、同じJNDI名を使用してデータソースを検索しますが、異なるデータソースを検索する必要があります。 2つのデータソースを定義して異なるターゲットにバインドしようとしましたが、異なるターゲットにバインドされていても、同じJNDI名を使用する2つのデータソースは許可されません。glassfish 3に配置する際のJPAデータソースJNDI名を上書きする方法は?

プロパティ置換を使用しようとしましたが、動作しませんでした。 誰もこれを解決する方法を知っていますか?同じドメインにアプリケーションを2回展開する方法はないようです。

答えて

1

JNDI名は、特定のオブジェクトのアドレスであり、一意でなければなりません。 2つのJNDI名を持つことは、携帯電話に「alex」という2つの番号がある場合と似ています。どちらがダイヤルしているかを知る方法はありません。

どのJPA実装でも動作する必要があるのは、persistent.xmlに2つのPU(JNDIデータソースを持つPUと他のJNDIデータソースのPU)を持つことです。両方のデータソースで同じビジネスオブジェクトを持たないかもしれないので、これは意味があります。

次に、EntityManagerを取得したら、どのPUを明示的に指定するかを指定します。これを設定ファイルに設定するか、動的に他の方法で設定することができます。

entfactory = OpenJPAPersistence.createEntityManagerFactory(*persistentUnitName*, (String) null); 

・ホープ、このことができます -

-Alex

関連する問題