Jasper nel molo lancia IllegalStateException su getOutputStream ma non su Tomcat

StackOverflow https://stackoverflow.com/questions/608352

  •  03-07-2019
  •  | 
  •  

Domanda

Ho un'applicazione web attualmente in esecuzione con Tomcat 5.5.25. Sto tentando di portarlo su Jetty 6 per sfruttare il tempo di aggiornamento rapido per le modifiche jsp e dell'interfaccia utente in particolare.

Poiché i miei file JSP sono conformi a JSP 2.0, sto eseguendo jetty sotto maven usando la configurazione suggerita sul sito web del plugin molo maven. Questa configurazione carica la versione 5.5.15 del compilatore JSP di Jasper di Apache. (Disponibile anche nel repository Maven è 5.5.23, ma ha lo stesso risultato.)

Sotto il molo, la mia home page, configurata usando i riquadri, esplode con IllegalStateException in ServletResponseWrapperInclude.getOutputStream (). Ovviamente sotto Tomcat non lo fa.

Faccio fatica a capire di cosa si tratta sulle nostre tessere e include ciò che farebbe lamentare il diaspro nel molo e non in Tomcat.

È stato utile?

Soluzione

Potrebbe non essere una buona risposta, ma abbiamo scoperto che questo errore si verifica quando Tiles include un riquadro vuoto.

Esaminando i JSP dei riquadri master e rimuovendo i riferimenti a riquadri vuoti, risolviamo questo problema.

Altri suggerimenti

Wow - bella scoperta! Un'altra soluzione su cui mi sono appena imbattuto è quella di definire il riquadro include come una stringa vuota anziché come definizione vuota / nulla.

In altre parole, se ho definito una tessera come segue, premo IllegalStateException che descrivi:

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

Se io, invece, definisco la tessera come segue, l'eccezione scompare:

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

Strano bug, strana soluzione, ma funziona per me!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top