Javaアプリケーションは、ネットワークドライブ上のJarから実行されています。なんらかの理由でJarファイルが使用できなくなった場合、期待どおりにNoClassDefFoundErrorが発生します。ネットワーク接続の例のように失われます。しかし、私が奇妙に感じるのは、アプリケーションがまだ完全にクラッシュし、Jarファイルがあるネットワークドライブでフェールオーバーが発生した場合には回復しないということです。ネットワークドライブのフリック後にJVMが復旧しないのはなぜですか?
フェイルオーバーは、ネットワークドライブは、それが唯一のフリック簡単には変更しないことを意味し、再びすぐに使用可能になったが、それは(インフラの連中はノードそれを呼び出す)内部の低レベルのドライブのいくつかの並べ替えを変更します。フェールオーバーが発生した後(ノードが変更された場合)、Citrixサーバーで実行されているアプリケーションに接続されたすべてのユーザーが同じ例外を受け取ります。
ネットワークドライブがオンラインに戻ると、JVMは復旧できるはずですが、Jarが見つかった古いノードから新しいノードではなく古いノードからクラスを取得しようとしているようです。誰でもJVMがこの動作を提示する理由を知っていますか?
これは、JARファイルのロードを1回だけ試みます。これをローカルの一時ファイルにコピーします。 – EJP
あなたのコメントをお寄せいただきありがとうございます。Jarファイルがローカルの一時ファイルにロードされている場合、ネットワークドライブが利用できなくなった場合にJavaアプリケーションがエラーを発生させることはありません。私が説明したシナリオは、Javaアプリケーションが実行されているときに発生します。つまり、Jarからポイントフェイルオーバーが発生するまで実行する必要があるすべてのメモリーを正常にロードしました。フェイルオーバーには約2秒かかります。同じネットワークドライブで使用できますが、内部の「ノード」は変更されています。ジャークラスがメモリにロードされているとアプリケーションが実行された後にネットワークエラーが発生するのは、ネットワークエラーの – alejob2k
しかし、JARファイル*は*一時ファイルにロードすることはできません、*。* – EJP