2009-03-03 67 views
3

我有一個當前正在Tomcat 5.5.25下運行的Web應用程序。我試圖將它移植到Jetty 6,以便利用jsp和UI更改的快速刷新時間。Jetty中的Jasper在getOutputStream上拋出IllegalStateException,但不在Tomcat上

由於我的JSP文件符合JSP 2.0,我使用maven碼頭插件網站上建議的配置在maven下運行jetty。該配置加載apache的jasper JSP編譯器5.5.15版。 (也可以在Maven倉庫中獲得5.5.23,但它有相同的結果。)

在jetty下,我的主頁(使用tiles配置)在ServletResponseWrapperInclude.getOutputStream()中發生IllegalStateException異常。很明顯,在Tomcat下它不會這樣做。

我正在努力瞭解它是什麼關於我們的瓷磚,幷包括這將導致碧玉投訴在碼頭而不是在雄貓。

+0

堆棧跟蹤有任何額外的錯誤消息嗎? – toolkit 2009-03-03 21:47:07

+0

工具包++請包括完整的堆棧跟蹤 – cherouvim 2009-03-04 17:10:23

回答

1

這可能不是很大的答案,但我們發現,當Tiles包含一個空的圖塊時會發生此錯誤。

通過瀏覽我們的主磁貼JSP並刪除對空磁貼的引用,我們使這個問題消失。

0

哇 - 很好找!我偶然發現的另一個解決方案是將tile包定義爲空字符串而不是空/空定義。

換句話說,如果我定義瓷磚如下,我打的IllegalStateException異常你描述:

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

如果我,在另一方面,定義瓷磚如下,異常消失:

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

奇怪的錯誤,奇怪的解決方案,但它適用於我!

相關問題