我有一个当前在Tomcat 5.5.25下运行的Web应用程序。我正在尝试将它移植到Jetty 6,以利用jsp和UI更改的快速刷新时间。
由于我的JSP文件符合JSP 2.0,因此我使用maven jetty插件网站上建议的配置在maven下运行jetty。此配置加载apache的jasper JSP编译器版本5.5.15。 (在maven资源库中也可以使用5.5.23,但结果相同。)
在jetty下,我的主页(使用磁贴配置)在ServletResponseWrapperInclude.getOutputStream()中出现IllegalStateException。显然在Tomcat下它不会这样做。
我很难理解我们的瓷砖是什么,包括这会导致碧玉在码头而不是在Tomcat中抱怨。
答案 0 :(得分:1)
这可能不是一个很好的答案,但我们发现当Tiles包含空的磁贴时会发生此错误。
通过浏览我们的主磁贴JSP并删除对空磁贴的引用,我们就会解决这个问题。
答案 1 :(得分: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>
奇怪的错误,奇怪的解决方案,但它对我有用!