OK、通常は各 Web アプリに Tomcat 7 インスタンスをインストールしています。これらはほぼ同じコード ベース (実際には同じアプリ) ですが、変更のために 1 つのアプリをダウンさせて他の顧客に影響を与えるわけにはいかないためです。
しかし、非常に多くの Tomcat をインストールするのは時代遅れです。そのため、Tomcat の数を顧客グループごとに 1 つに減らすことにしました。
とにかく、私たちの Hibernate 構成は JNDI を使用しており、Tomcat グループごとにユニバーサル context.xml ファイルを作成し、CATALINA_BASE/conf/context.xml
それを に保存して、同じグループのすべてのアプリケーションが同じ実稼働データベース データ ソースを共有できるようにしようと考えました。
開発用にローカルの Tomcat で同じことを行い、コンテキストに開発データ ソース情報を含めるだけです。そのため、戦争を本番サーバーまたはローカル開発サーバーにデプロイするだけで、コンテキスト ファイルを変更する必要がありません。
次のスキームを維持すれば、これをうまくやってのけることができるはずだと思います。
CATALINA_BASE/conf/context.xml # either contains production or dev connections
CATALINA_BASE/conf/Catalina/localhost/ # EMPTY - don't want apps overwriting data sources
CATALINA_BASE/webapps/<webapp>/META-INF/context.xml # almost BLANK.
これはこれまでのところ機能しているように見えますが (1 つの Web アプリでのみテストされています)、context.xml に<webapp>/META-INF
は有効なコンテキストとコンテキスト パスが含まれている必要があるようです。何故ですか?そのパスは Web アプリごとに異なる必要がありますか? 現在、そのファイルには接続情報はありません (ファイルのみにありますconf/context.xml
)。
要するに、各 Web アプリがデータベース接続情報を取得する場所を「ダム」にして、war ファイルをどこにでもドロップでき、それらが自動的に接続されるようにしたいのです。
提案をありがとう。