1 つの WAR ( app.war ) と 1 つのコンテナー (Tomcat、Jetty、Glassfish など) があります。私の目標は、この同じ Web アプリケーションの何百ものインスタンスをコンテナーにオンデマンドでデプロイすることです。
http://foo/app1 --> app.war
http://foo/app2 --> app.war
http://foo/app3 --> app.war
...
http://foo/appN --> app.war
これを達成するいくつかの明白な方法:
- Tomcat で、アプリごとに 1 つの context.xml ファイル ( appN.xml という名前) を作成し、すべてが同じ WAR を指すようにします。他のコンテナにも同様の方法があります
- このアプローチの問題: WAR N 回爆発し、多くのディスク領域を占有します。
- シンボリック リンクを使用して、展開されたバージョンの app.war を指す webapp/{app1,app2,appN} フォルダーを作成します。これにより、ディスク容量の爆発は防止されますが、JVM は依然として多くの重複した JAR をメモリにロードしています。
- 一部の共有 lib フォルダーを使用して、ほとんどの jar (および前の 2 つのオプションの組み合わせ) を含めます。
これを行うためのより良い方法があるかどうか疑問に思います。理想的には、新しいインスタンスを作成する際に (限界構成ファイル以外の) ディスク領域をまったく消費せず、スレッド実行スタックやその他のランタイム割り当てに関連するメモリのみを消費する必要があります。
何か案は?