Mi sono imbattuto in questo brutto comportamento su JBoss 4.2 in QA, e voglio soffermarmene sul nascere prima di andare in produzione e trovare qualche altro caso d'angolo.Come si può forzare la ricompilazione di jsps in JBoss 4.2?
Un jsp calles un metodo che ha avuto la seguente firma:
public void methodName(String arg)
Questo è stato cambiato in:
public void methodName(String arg, Object... args)
una preesistente JSP chiamato questo metodo tramite:
methodName("param");
Sulla distribuzione del codice modificato, JBoss non ha ricompilato il JSP e questo ha causato un arresto anomalo in QA. L'aggiunta di un commento stupido al jsp ha risolto il problema (JBoss ha riconosciuto che il JSP lo ha modificato e ricompilato).
Esiste un'impostazione su JBoss per forzare la ricompilazione di JSP al riavvio?
MODIFICA: per chiarire alcuni punti nella risposta, l'impostazione è che i JSP fanno parte di una guerra che fa parte di un orecchio. L'orecchio ha tutte le classi in esso, in un barattolo.
Per quanto riguarda il desiderio di pre-compilazione, se il sistema non ritiene che il jsp necessiti di una compilazione, pre-compili la ricompilazione della forza? Non sembra così. L'errore qui non è un errore di complicazione, è un errore di chiamata del metodo a causa della firma del metodo "modificato" (a livello di codice byte, non proprio a livello di codice).
Addendum: Si noti che recentemente abbiamo riscontrato in produzione che, anche con il flag di risposta accettato, le JSP non sono state ricompilate, anche se il JSP ha effettivamente cambiato. Grande bug lì, ma a prescindere, JBoss era normalmente chiuso. A questo punto sta diventando una vecchia versione di JBoss, ma se lo si sta ancora utilizzando, l'eliminazione del contenuto del lavoro e delle directory tmp è l'unico modo per essere sicuri.
Non sto cambiando la risposta accettata semplicemente perché arriva veramente al punto di quello che la domanda stava cercando. I bug di JBoss sono una specie di problema separato.
Ottimo! Controllerò che funzioni, e se accetta la risposta. – Yishai
+1 Grazie! Solo per notare in JBoss 5.1.0GA il file equivalente è $ JBOSS/server/default/deplyers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml –
Grazie, questo ha risolto un problema che avevo con i cambiamenti jsp non è stato riflesso dopo una distribuzione. –