Java 如何在weblogic12c中将动态图像作为servletoutputstream的一部分发送

Java 如何在weblogic12c中将动态图像作为servletoutputstream的一部分发送,java,servlets,weblogic12c,Java,Servlets,Weblogic12c,我必须发送通过BuffereImage和imageIO.write生成的动态图像。byteArray被写入httpsevletresponse的servletoutputstream。在httpsevletresponse对象中,内容类型设置为image/jpeg,编码设置为utf-8 但是当sevletOutputStream.write(b)时,我得到了java.nio.charset.MalFormedInputException:输入长度:1 我是否需要将编码设置为utf-16 此错误仅

我必须发送通过BuffereImage和imageIO.write生成的动态图像。byteArray被写入httpsevletresponse的servletoutputstream。在httpsevletresponse对象中,内容类型设置为image/jpeg,编码设置为utf-8

但是当sevletOutputStream.write(b)时,我得到了java.nio.charset.MalFormedInputException:输入长度:1

我是否需要将编码设置为utf-16

此错误仅出现在带有jdk 1.7.0_45的weblogic 12c服务器中

同样的代码也适用于其他应用服务器以及tomcat

StackTrace:异常跟踪,如下所示

<captchaBytes=[B@26e5c86e>  
  java.nio.charset.MalformedInputException: Input length = 1> 
<at java.nio.charset.CoderResult.throwException(CoderResult.java:277)> 
<at weblogic.servlet.internal.CharChunkOutput.write(CharChunkOutput.java:116)>
<at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:148)>
<at weblogic.servlet.jsp.BodyOutputStream.write(NestedBodyResponse.java:54)>
<at java.io.OutputStream.write(OutputStream.java:75)>

在调用
out=httpServletResponse.getOutputStream()
之前添加
httpServletRequest.resetBuffer()
后,解决了此问题。引发了
格式错误的PutException
,因为生成图像的JSP作为其他JSP的一部分包含在图像标记src中。

没有源代码和stacktrace,无法猜测发生了什么。添加了stacktrace和code在这种情况下,我更喜欢完整的stacktrace,这非常简短。顺便说一句,在传递二进制数据时设置字符编码是没有意义的。这是我在测试web应用程序中调用的。在此之前,我们只有本地文件名。请尝试注释掉setCharacterEncoding()并在写入后移动flush()。我怀疑weblogic认为它是用UTF编码的字符流,无法将二进制数据转换为UTF字符。你的意思是其他人已经写入了输出?发送到此servlet的某个筛选器或其他servlet?是。此链接中提到了相同的代码
Byte[] imageBytes = get image byte from backend using ImageIO.write
httpServletResponse.setContentType("image/jpeg");
ServletOutputStream out;
httpServletResponse.setHeader("Cache-Control", "no-store");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.setCharacterEncoding("UTF-8");
out = httpServletResponse.getOutputStream();
out.flush();
out.write(imageBytes);  \\ Error Occured here