Ich traf auf diesem fiesen Verhalten auf JBoss 4.2 in QA, und ich möchte es im Keim ersticken, bevor wir in Produktion gehen und eine andere Ecke Fall finden.Wie können Sie die Neukompilierung von Jsps in JBoss 4.2 erzwingen?
A jsp Calles ein Verfahren, das die folgende Signatur hatte:
public void methodName(String arg)
Dies wurde geändert:
public void methodName(String arg, Object... args)
Eine bereits bestehende JSP diese Methode via genannt:
methodName("param");
Bei der Implementierung des modifizierten Codes hat JBoss die JSP nicht neu kompiliert, was zu einem Absturz in der QA führte. Das Hinzufügen eines dummen Kommentars zum JSP behob das Problem (JBoss erkannte, dass die JSP es änderte und neu kompilierte).
Gibt es eine Einstellung auf JBoss Neuübersetzung von JSPs beim Neustart zu erzwingen?
EDIT: Um einige Punkte in der Antwort zu klären, ist das Setup, dass die JSPs Teil eines Krieges sind, der Teil eines Ohres ist. Das Ohr hat alle Klassen in einem Glas.
In Bezug auf den Wunsch, vorkompilieren, wenn das System nicht denkt, dass die JSP kompiliert werden muss, kompiliert Force-Compilierung vorkompilieren? Es scheint nicht so. Der Fehler ist hier kein Komplikationsfehler, es ist ein Methodenaufruffehler wegen der "geänderten" (auf der Bytecodeebene, nicht wirklich auf der Codeebene) Methodensignatur.
Nachtrag: Beachten Sie, dass wir in der Produktion in letzter Zeit erfahren haben, dass selbst mit der akzeptierten Antwortflagge die JSPs nicht neu kompiliert wurden, obwohl sich die JSP tatsächlich änderte. Major Bug dort, aber egal, JBoss wurde normal heruntergefahren. An diesem Punkt wird es eine alte Version von JBoss, aber wenn Sie es immer noch benutzen, ist das Löschen des Inhalts der Verzeichnisse work und tmp der einzige Weg, um sicher zu sein.
Ich ändere nicht die angenommene Antwort, einfach weil es wirklich zu dem Punkt kommt, wonach die Frage gesucht hat. JBoss Bugs sind ein separates Problem.
Großartig! Ich überprüfe, ob es funktioniert und ob es die Antwort akzeptiert. – Yishai
+1 Danke! Nur um in JBoss 5.1.0GA zu erwähnen, ist die entsprechende Datei $ JBOSS/server/default/deplyers/jbossweb.deployer/META-INF/war-deployer-jboss-beans.xml –
Danke, dies löste ein Problem, das ich mit JSP-Änderungen hatte wurde nach einer Bereitstellung nicht angezeigt. –