QA で JBoss 4.2 のこの厄介な動作に気付きました。本番環境に移行して他のコーナー ケースを見つける前に、芽を摘んでおきたいと思います。
jsp は、次のシグネチャを持つメソッドを呼び出します。
public void methodName(String arg)
これは次のように変更されました。
public void methodName(String arg, Object... args)
既存の JSP は、次の方法でこのメソッドを呼び出しました。
methodName("param");
変更されたコードのデプロイ時に、JBoss は JSP を再コンパイルしなかったため、QA でクラッシュが発生しました。jsp にばかげたコメントを追加すると、問題が修正されました (JBoss は JSP が変更されたことを認識し、再コンパイルしました)。
再起動時に JSP の再コンパイルを強制する JBoss の設定はありますか?
編集:答えのいくつかの点を明確にするために、セットアップは、JSP が耳の一部である戦争の一部であるということです。ear には、すべてのクラスが jar に含まれています。
プリコンパイルしたいという要望に関して、システムが jsp をコンパイルする必要がないと判断した場合、プリコンパイルは再コンパイルを強制しますか? そうではないようです。ここでのエラーはコンパイル エラーではなく、(実際にはコード レベルではなくバイト コード レベルで) 「変更された」メソッド シグネチャによるメソッド呼び出しエラーです。
補遺: 最近の本番環境では、受け入れられた回答のフラグが設定されていても、JSP が実際に変更されたにもかかわらず、JSP が再コンパイルされなかったことに注意してください。重大なバグがありましたが、JBoss は正常にシャットダウンされました。この時点で JBoss の古いバージョンになりつつありますが、まだ使用している場合は、作業ディレクトリと tmp ディレクトリの内容を削除することが確実な唯一の方法です。
質問が探していたものに実際に到達したという理由だけで、受け入れられた回答を変更していません。JBoss のバグは別の問題です。