2009-03-03 50 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> 

奇怪的错误,奇怪的解决方案,但它适用于我!

相关问题