2

我有一个带有脚本的旧版 JSP,我正在 Websphere 7.0.0.13 上的应用程序中对其进行测试。具有完全相同数据的相同 JSP 在 Weblogic 10.3.2 中可以正常工作。

JSP 使用代码生成大量 HTML 输出 + javascript。在 Websphere 上,在 JSP 的输出中间始终出现 NullPointerException 失败。每次失败时,页面中大约 680 KB 的数据都会失败。

如果我从浏览器查看源代码,输出的最后一行会被截断,就像这样

";document.getElementById('start.123.12345.67891.123123123').appendChild(divTag);exError 500: java.lang.NullPointerException

没有其他输出。日志报告来自我的 JSP 的未捕获 NullPointerException。

大部分输出是使用out.println();脚本内的页面 JspWriter 生成的。

我尝试为 autoflush=true 添加页面指令,认为这可能是缓冲区问题,但仍然失败。<%@page autoFlush="true" %>

4

1 回答 1

1

在使用keepgenerated JSP 引擎配置参数查看生成的 java 文件并使用 NullPointerException 的堆栈跟踪中的行号后,我解决了这个问题。

原始开发人员在文件末尾的脚本中将 JspWriter 设置为 null。

<% 
  out = null;
%>
</html>

在 Websphere 生成的 .java 文件中,out 变量在以下内容之前设置为 null:

out = null;
out.write(_jsp_string55);

如果我注释掉out = null;JSP 文件中的语句,这将解决问题。

仅供参考 - 我还创建了一个测试 JSP,它通过循环和打印到 JspWriter 来写入远远超过 680 KB。我发现无论输出大小如何,我都无法重现相同的 NullPointerException。

于 2013-01-08T20:18:33.840 回答