3

我有一个当前在 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,但结果相同。)

在码头下,我的主页使用瓷砖配置,在 ServletResponseWrapperInclude.getOutputStream() 中出现 IllegalStateException。显然在Tomcat下它不会这样做。

我正在努力理解我们的瓷砖是什么,并且包括会导致 jasper 在码头而不是在 Tomcat 中抱怨的内容。

4

2 回答 2

1

这可能不是一个很好的答案,但我们发现当 Tiles 包含一个空的 tile 时会发生此错误。

通过检查我们的主图块 JSP 并删除对空图块的引用,我们解决了这个问题。

于 2009-03-24T22:39:51.423 回答
0

哇——很好的发现!我刚刚偶然发现的另一个解决方案是将磁贴包含定义为空字符串,而不是空/空定义。

换句话说,如果我按如下方式定义了一个图块,我会遇到您描述的 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>

奇怪的错误,奇怪的解决方案,但它对我有用!

于 2010-03-15T17:29:38.873 回答