代码之家  ›  专栏  ›  技术社区  ›  Mojo

Jetty中的Jasper在GetOutputStream上引发IllegalstateException,但在Tomcat上不引发。

  •  3
  • Mojo  · 技术社区  · 17 年前

    我有一个Web应用程序,目前运行在Tomcat5.5.25下。我正试图将其移植到Jetty6,以利用JSP和UI更改的快速刷新时间。

    因为我的JSP文件是JSP 2.0兼容的,所以我使用Maven Jetty插件网站上建议的配置在Maven下运行Jetty。这个配置加载Apache的JasperJSP编译器5.5.15版。(Maven呼吸系统也有5.5.23,但结果相同。)

    在jetty下,使用tiles配置的主页在servletresponsewrapperinclude.getOutputstream()中以illegalStateException展开。显然,在Tomcat的领导下,它不会这样做。

    我正在努力理解我们的瓷砖是怎么回事,包括这会导致贾斯珀在码头抱怨,而不是在Tomcat。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Mojo    17 年前

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

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

        2
  •  0
  •   delfuego    16 年前

    哇——好极了!我刚刚偶然发现的另一个解决方案是将tile include定义为空字符串,而不是空/空定义。

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

    奇怪的虫子,奇怪的解决方案,但它对我有用!