3

我在使用带有 Fixpack 1 的 Websphere 8.5 Liberty Profile 时遇到了以下似乎违反 Servlet API 的问题。

如果响应正文正在写入响应输出流 (HttpServletResponse#getOutputStream()),则在 response.setLocale() 之后未设置 Content-Language 响应标头。如果正文写在响应编写器上,它工作正常(HttpServletResponse#getWriter())

以下 JSP 不返回 Content-Language 响应标头:

<%@ page contentType="text/plain;charset=ISO-8859-1" session="false" import="java.util.*" %><% 
response.setLocale(Locale.ITALY); 

java.io.OutputStream os = response.getOutputStream();
try {
  os.write("Hello World".getBytes("ISO-8859-1"));
} finally {
  os.close();
}
%>

请注意,JSP 不得包含 <% ... %> 之外的任何字符,甚至不能在文件末尾包含尾随换行符。我在这里使用 JSP 只是为了重现该案例 - 当然,作家将是正常的方式。我们在 Java 代码内部使用了#getOutputStream。

我的假设是否正确,这种行为违反了 Servlet 规范?如果是这样,向 IBM 报告这些错误的最佳方式是什么?

我发现了一个与 Content-Language 响应标头稍微相关的错误报告,该错误报告仅针对 Liberty Profile 报告(并且已在 FP1 中修复):http://www-01.ibm.com/support/docview。 wss?rs=180&uid=swg1PM67523

4

1 回答 1

2

我建议使用WASdev 社区上的此页面向 IBM 报告错误。如果您不熟悉 WASdev 社区,那么它也是了解更多关于 Liberty 配置文件的好地方,它有一些很棒的教程。

于 2013-02-19T15:09:48.937 回答