【问题标题】:Jasper in jetty throws IllegalStateException on getOutputStream but not on TomcatJasper in jetty 在 getOutputStream 上抛出 IllegalStateException 但在 Tomcat 上没有
【发布时间】:2010-10-11 03:16:43
【问题描述】:

我有一个当前在 Tomcat 5.5.25 下运行的 Web 应用程序。我正在尝试将其移植到 Jetty 6,以利用 jsp 和 UI 更改的快速刷新时间。

由于我的 JSP 文件与 JSP 2.0 兼容,我正在使用 maven jetty 插件网站上建议的配置在 maven 下运行 jetty。此配置加载 apache 的 jasper JSP 编译器版本 5.5.15。 (maven repository 中也有 5.5.23,但是结果是一样的。)

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

我很难理解我们的瓷砖是什么,包括哪些会导致 jasper 在码头而不是在 Tomcat 中抱怨。

【问题讨论】:

  • 堆栈跟踪是否有任何其他错误消息?
  • toolkit++ 请包含完整的堆栈跟踪

标签: jsp tomcat jetty


【解决方案1】:

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

换句话说,如果我按如下方式定义一个 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>

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 请将此答案标记为已接受,这样该主题就不会每次都被戳到,因为它不包含任何已接受的答案:)
    猜你喜欢
    • 2016-04-18
    • 2018-07-05
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多