各Webアプリケーションが独自のプロセス(JVM)で動作するWebコンテナを実行したいとします。着信要求は、ポート80上で実行されているプロキシWebアプリケーションによって、各自のJVM内の独自のポートで実行されている個々のWebアプリケーション(Webアプリケーション)に転送されます。別々のプロセスでWebアプリケーションを実行する
これは、3つの問題を解決する:
- (再起動の間にJNIコードの変更)を再起動することができないJNIを使用してWebアプリケーション]。新しいWebアプリケーションをロードする前に古いWebアプリケーションがガベージコレクションされていることを保証する方法はないので、コードがSystem.loadLibrary()を呼び出すときにJVMがスローします。
java.lang.UnsatisfiedLinkError: Native Library x already loaded in another classloader.
- Webappがリロードされるたびに強制的にサーバーを再起動します。 Tomcatはこの問題に取り組んできましたが、決して完全に修正されることはありません。
- 再起動が高速です。私が提案しているメカニズムは、ほぼ即時のWebアプリケーションの再起動を可能にします。古いwebappがアンロードを完了するのを待つ必要がなくなりました。これは最も遅い部分です。
私はRFE hereとhereを掲示しました。私はあなたの考えを知りたいです。
今日、既存のWebコンテナはこれを行っていますか?
複数のWebアプリケーションに単一の管理インターフェイスを提供することで、今日別のコンテナを使用することで不可能な生産性を向上させることができます。たとえば、ユーザーがWebアプリケーションのリロードを要求すると、コンテナマイナスWebアプリケーションをバックグラウンドであらかじめ読み込んでおくことができます。リロードリクエストが来たら、古いJVMをシャットダウンし、新しいwebappを待機中のJVMにロードするだけです。これを今日実装しようとすると、インスタンスをシャットダウンしてインスタンスを連続して再起動すると時間がかかり、開発の生産性が低下します。 – Gili