2009-03-03 3 views
3

Ich habe eine Webanwendung, die derzeit unter Tomcat 5.5.25 ausgeführt wird. Ich versuche, es auf Jetty 6 zu portieren, um die schnelle Aktualisierungszeit für jsp und UI-Änderungen besonders zu nutzen.Jasper in Jetty wirft IllegalStateException auf getOutputStream aber nicht auf Tomcat

Da meine JSP-Dateien JSP 2.0-kompatibel sind, verwende ich Jetty unter maven mit der auf der maven jetty plugin-Website vorgeschlagenen Konfiguration. Diese Konfiguration lädt Apache Jaspis JSP Compiler Version 5.5.15. (Auch verfügbar in der Maven-Repository ist 5.5.23, aber es hat das gleiche Ergebnis.)

Unter Jetty, meine Homepage, die mit Kacheln konfiguriert ist, sprengt mit IllegalStateException in ServletResponseWrapperInclude.getOutputStream(). Offensichtlich unter Tomcat tut es das nicht.

Ich bin schwer zu verstehen, was es ist über unsere Fliesen und beinhaltet, dass Jaspis in Steg und nicht in Tomcat beschweren würde.

+0

Gibt es eine zusätzliche Fehlermeldung mit dem Stacktrace? – toolkit

+0

toolkit ++ Bitte füge vollen stacktrace ein – cherouvim

Antwort

1

Dies ist vielleicht keine große Antwort, aber wir haben festgestellt, dass dieser Fehler auftritt, wenn Tiles eine leere Kachel enthält.

Indem wir unsere Master-Kachel-JSPs durchlaufen und Referenzen auf leere Kacheln entfernen, machen wir dieses Problem weg.

+0

Bitte markiere diese Antwort akzeptiert, damit dieses Thema nicht immer wieder auffällt, da es keine akzeptierte Antwort enthält :) – BalusC

0

Wow - schöner Fund! Eine andere Lösung, über die ich gerade gestolpert bin, ist, das Kachel-Include als leere Zeichenfolge und nicht als leere/null-Definition zu definieren.

Mit anderen Worten, wenn ich eine Kachel wie folgt definiert, schlug ich die Illegal Sie beschreiben:

<definition name="login" extends="main.layout"> 
    <put name="title" value="Login" type="definition" /> 
    <put name="headinclude" value="" type="definition" /> 
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" /> 
</definition> 

Wenn ich auf der anderen Seite, die Fliese wie folgt definieren, geht die Ausnahme entfernt:

<definition name="login" extends="main.layout"> 
    <put name="title" value="Login" type="definition" /> 
    <put name="headinclude" value="" type="string" /> 
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" /> 
</definition> 

Seltsame Fehler, seltsame Lösung, aber es funktioniert für mich!