2009-03-03 2 views
3

J'ai une application web qui fonctionne actuellement sous Tomcat 5.5.25. J'essaye de le porter à Jetty 6 pour profiter du temps d'actualisation rapide pour les changements de jsp et d'interface utilisateur en particulier. Comme mes fichiers JSP sont compatibles avec JSP 2.0, j'utilise jetty sous maven en utilisant la configuration suggérée sur le site web maven jetty plugin. Cette configuration charge la version 5.5.15 du compilateur JSP jasper d'apache. (Disponible également dans le référentiel maven est 5.5.23, mais il a le même résultat.)Jasper dans jetty lance IllegalStateException sur getOutputStream mais pas sur Tomcat

Sous jetée, ma page d'accueil, qui est configurée à l'aide de carreaux, explose avec IllegalStateException dans ServletResponseWrapperInclude.getOutputStream(). De toute évidence, sous Tomcat, cela ne fonctionne pas.

J'ai du mal à comprendre ce qu'il en est de nos tuiles et comprend que cela ferait jasper se plaindre dans la jetée et pas dans Tomcat.

+0

Y a-t-il un message d'erreur supplémentaire avec la pile? – toolkit

+0

toolkit ++ s'il vous plaît inclure full stacktrace – cherouvim

Répondre

1

Cela peut ne pas être une bonne réponse, mais nous avons découvert que cette erreur se produit lorsque Tiles inclut une case vide. En passant par nos JSP de tuiles maîtresses et en supprimant les références aux tuiles vides, nous faisons disparaître ce problème.

+0

S'il vous plaît marquer cette réponse acceptée, de sorte que ce sujet ne sera pas enfoncé chaque fois parce qu'il ne contient aucune réponse acceptée :) – BalusC

0

Wow - belle trouvaille! Une autre solution que je viens de trébucher est de définir l'inclusion de la tuile comme une chaîne vide plutôt que comme une définition vide/nulle.

En d'autres termes, si je définissais une tuile comme suit, je frappe le IllegalStateException que vous décrivez:

<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> 

Si je, d'autre part, définir la tuile comme suit, l'exception disparaît:

<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> 

Bug étrange, solution étrange, mais ça marche pour moi!

Questions connexes