简体   繁体   English

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

[英]how to send dynamic image as part of servletoutputstream in weblogic12c

I have to send dynamic image generated through BufferedImage and imageIO.write. 我必须发送通过BufferedImage和imageIO.write生成的动态图像。 The byteArray is written to servletoutputstream of httpsevletresponse. 将byteArray写入httpsevletresponse的servletoutputstream中。 The content-type is set to image/jpeg and encoding is set to utf-8 in httpsevletresponse object. 在httpsevletresponse对象中,内容类型设置为image / jpeg,编码设置为utf-8。

But while sevletOutputStream.write(b), I am getting java.nio.charset.MalFormedInputException : Input length :1 但是在sevletOutputStream.write(b)时,我正在获取java.nio.charset.MalFormedInputException:输入长度:1

Do I need to set the encoding to utf-16. 我是否需要将编码设置为utf-16。

This error is coming in weblogic 12c server with jdk 1.7.0_45 only. 仅使用jdk 1.7.0_45的weblogic 12c服务器中会出现此错误。

The Same code is working on other application server as well as tomcat 同一代码可在其他应用程序服务器和tomcat上运行

StackTrace : The exception trace as per below 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)>

Code Snippet : 代码段:

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

After adding httpServletRequest.resetBuffer() before calling the out = httpServletResponse.getOutputStream() resolved this issue. 在调用out = httpServletResponse.getOutputStream() httpServletRequest.resetBuffer()之前添加httpServletRequest.resetBuffer()之后,解决了此问题。 The MalformedInputException was thrown because this JSP where image was generated was included as part of other jsp within the image tag src. 之所以抛出MalformedInputException是因为生成图像的这个JSP作为其他jsp的一部分包含在图像标签src中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM