アプリケーションシナリオ
IaaSクラウドサービス上に多数のTomcatサーバーがあるので、それらはすべて私の管理下にあります。
これらのサーバーは(アプリケーションが設計段階にあります)、Tomcat、JBoss、WebsphereなどのJavaアプリケーションコンテナーソフトウェアを実行します。
どのソリューションが最適かは別として、私は完全なソースコードを持っているWebアプリケーション(WAR)を持っています。他の適切なホスティング環境と同様に、新しいユーザーを設定することは、同じWebアプリケーションの新しいコピーを別のアプリケーションコンテキストにデプロイすることを意味します(たとえば、WARをコピーしてnewuser.war
Tomcatに食べさせます)。
アプリケーションは完全にSpringとHibernateに基づいています。Mavenを搭載しています。
IaaSで実行しているため、管理ソフトウェアに要件を追加することを検討しています。アプリケーションサーバーがダウンした場合、別のノードで実行されているWebアプリケーションを再デプロイしたり、新しいマシンのクラウドプロバイダープロビジョニングを自動的に要求したりします(特に登録ユーザーが増えた場合)。現在、プロバイダーにはPaaSサービスがありません。JavaWebappsをサポートするクラウドプロバイダーについて議論することは範囲外です。
構成のニーズ
前述のWebアプリケーションの各インスタンスには、独自のデータベースがあります(管理ソフトウェアによって生成された特定の接続文字列が必要です)。また、文字列プロパティでカスタマイズするBeanがいくつか必要です。
質問
自己管理および自動管理可能なTomcatサーバーに焦点を当てて、自動セットアップメカニズムを設計する必要があります(前に説明したフェイルオーバーに統合するため)。現在の問題は、DB接続文字列といくつかのSpring Beanの文字列プロパティを設定することです(これらは1対1のパスコードで共有されます)。
最初に、考えられる解決策を思いついたのですが、それが簡単さと管理のしやすさの点で「最良」であるかどうかはわかりません。
問題は次のとおりです。
- 大まかに言えば、以下に説明するアプローチに大きな欠陥がありますか?
- 私がしなければならないことを達成するためのよりスマートなソリューション(おそらく追加のソフトウェアの使いやすさ)を知っていますか?
アプローチ
完全なソースコードがあるので、Bashスクリプトで十分かもしれません。
- SVNプロダクションブランチから新しいコピーをダウンロードします
- 文字通り、接続文字列を
hibernate.cfg.xml
目的の文字列に置き換えます(おそらく、SVNブランチのファイルに文字列置換用のプレースホルダーが含まれています) - 文字通り、Spring構成ファイルのプレースホルダーを置き換えます
- 新しい名前でTomcatwebappフォルダーにコピーします
- Tomcatが自動デプロイされるのを待ちます