数日間の検索、試行、およびヘッドバンギングの後、この質問を SO に投稿しますが、既に回答されているようです。
シナリオは次のとおりです。(現時点では) 1 つの WAR と 1 つの EJB モジュールを含む EAR アプリケーションがあります。EJB モジュールは JPA (persistence.xml) を使用し、一部のステートレス セッション Bean は Web サービス経由で公開されます。Web サービスは、jdbc レルムによる基本認証を使用します。Web モジュールは、同じレルムでフォーム認証を使用します。
要件:このアプリケーションを異なるサーバー (dev/test/prod) または同じサーバー (またはクラスター) に異なるデプロイメント記述子でデプロイできる必要があります。各アプリケーション インスタンスで異なる必要がある展開設定は次のとおりです。
- persistence.xml の jta-data-source
- web.xml のレルム名
- web.xml の javax.faces.PROJECT_STAGE
- glassfish-ejb-jar.xml の webservice-endpoint\endpoint-address-uri および login-config\realm
- application.xml の context-root (違いがあれば、web.xml に移動できます。以下を参照してください)
- glassfish-application.xml のレルム
私の研究の間、私は以下を管理しました:
- を使用して javax.faces.PROJECT_STAGE をオーバーライドできます
asadmin set-web-context-param
- デプロイ プランを使用して、glassfish-ejb-jar.xml のすべての設定をオーバーライドできます。
asadmin deploy
- 同じことがglassfish-application.xmlにも当てはまります
- おそらくコンテキストルートをオーバーライドできます
asadmin deploy
(これが EAR 内の複数の Web モジュールでどのように機能するかはわかりません)。
ここまでは順調ですね。これにより、次の問題が発生します。
- web.xml のレルム名を簡単に変更するにはどうすればよいですか?
- persistence.xml の jta-data-sourceを簡単に変更するにはどうすればよいですか?
簡単に言えば、展開中、または展開計画 jar に似たものを使用することを意味します。変更された .xml ファイルだけで ejb.jar または war の複数のコピーを維持することはできません。
明確にするために、必要なのは、同じアプリケーションを使用するさまざまなデータベース (さまざまな開発段階またはさまざまな顧客用) を持つことです。アプリケーションは 1 つの持続性ユニットを使用しますが、別のデータベースを指す必要があります (したがって、jta-data-source)。レルムは、アプリケーション インスタンスごとに異なる必要がある (同じデータベース上の) jdbc レルムです。
どんな助けやポインタも大歓迎です。