私はJBoss 4.2のQAでこの厄介な振る舞いに襲いかかりました。私たちが生産に入り、他のコーナーケースを見つける前に、私はそれを芽の中に挟みたいと思います。JBoss 4.2でjspを強制的に再コンパイルできますか?
A JSP calles次のシグネチャを有していた方法
public void methodName(String arg)
これをに変更した:
methodName("param");
:
public void methodName(String arg, Object... args)
既存のJSPを介して、このメソッドを呼び出し
変更されたコードの展開では、JBossはJSPを再コンパイルしなかったため、QAがクラッシュしました。 jspに愚かなコメントを追加すると、問題が解決しました(JBossはJSPが変更され、再コンパイルされたことを認識しました)。
再起動時に強制的にJSPを再コンパイルする設定がJBossにはありますか?
EDIT:答えのいくつかの点を明確にするために、JSPは耳の一部である戦争の一部です。耳には瓶の中にあるすべてのクラスがあります。
jspがコンパイルを必要としているとシステムが思っていない場合、事前コンパイルの要望に関して、強制的に再コンパイルするでしょうか?そうは思われません。ここでのエラーは合併エラーではなく、(変更されたコードコードレベルではなく)バイトコードレベルのメソッドシグネチャであるため、メソッド呼び出しエラーです。
補足:私たちは、受け入れられた回答のフラグが設定されていても、JSPが実際に変更されたにもかかわらず、JSPが再コンパイルしなかったことに最近気付きました。主なバグはありますが、JBossは正常にシャットダウンしていました。現時点ではJBossの古いバージョンになっていますが、まだ使用している場合は、作業ディレクトリとtmpディレクトリの内容を削除することが確実です。
私は受け入れられた答えを変更していないのは、本当に質問が探していた点に到達したからです。 JBossのバグは別の問題です。
素晴らしい!私はそれが動作することを確認し、答えを受け入れるかどうかを確認します。 – Yishai
+1ありがとう! JBoss 5.1.0GAに注意するだけで、同等のファイルは$ JBOSS/server/default/deplyers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml –
ありがとう、これはjspの変更で問題を解決しました配備後に反映されませんでした。 –