Page 1 of 1

problem when when writing the graph as PNG

Posted: Thu Jan 31, 2008 10:16 am
by snageshbabu
Hi,
I have a problem when i am calling a servlet from jsp through img tag.
The code is working fine when tested in local, but getting problem when i deployed on DEV.
This is the code in servlet..
OutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
out.close();

This is the error...

javax.imageio.IIOException: I/O error writing PNG file!
at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1116)
at javax.imageio.ImageWriter.write(ImageWriter.java:598)
at javax.imageio.ImageIO.write(ImageIO.java:1450)
at javax.imageio.ImageIO.write(ImageIO.java:1524)
at com.jpmorgan.mds.curvegraph.GraphAfterDF.doGet(GraphAfterDF.java:249)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.jpmorgan.janus.webagent.j2ee.JanusFilterAgent.doFilter(JanusFilterAgent.java:174)
at com.jpmorgan.janus.webagent.j2ee.JanusFilter.doFilter(JanusFilter.java:84)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:201)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.cluster.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:210)
at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Thread.java:595)
Caused by: ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98)
at javax.imageio.stream.FileCacheImageOutputStream.flushBefore(FileCacheImageOutputStream.java:214)
at com.sun.imageio.plugins.png.IDATOutputStream.finishChunk(PNGImageWriter.java:172)
at com.sun.imageio.plugins.png.IDATOutputStream.finish(PNGImageWriter.java:229)
at com.sun.imageio.plugins.png.PNGImageWriter.write_IDAT(PNGImageWriter.java:894)
at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1106)
... 24 more
Caused by: java.io.IOException
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:700)
at org.apache.coyote.http11.InternalAprOutputBuffer.flush(InternalAprOutputBuffer.java:288)
at org.apache.coyote.http11.Http11AprProcessor.action(Http11AprProcessor.java:967)
at org.apache.coyote.Response.action(Response.java:183)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
... 31 more
I guess its bug in jfreecharts.
Thanks for the help in Advance.
SNB

Posted: Tue Feb 05, 2008 6:56 am
by lia
I have just migrated from Java 1.4 and Tomcat 4. My servlet was able to get the output stream and display the chart in Java 1.4 using Tomcat 4, now I am working in Java 1.6 and Tomcat 6 and I am getting the error javax.imageio.IIOException: unable to get outputsteam. PLease help I am also stuck

Posted: Thu Apr 17, 2008 4:04 pm
by david.gilbert
Sorry for the delay responding.

These sound like questions for the regular JFreeChart forum, rather than Eastwood. However, two things to check:

(1) Is your server running in "headless" mode? This is a common issue when something works on your local machine, but doesn't work on the server. The exception messages are not always that helpful. See item 10 in the JFreeChart FAQ for more info:

http://www.jfree.org/jfreechart/faq.html#FAQ10

(2) Are you using JFreeChart 1.0.9 and sending JPEG images back to the client? There is a bug in JFreeChart 1.0.9 (only) with respect to JPEG images (only). You can workaround this by downgrading to JFreeChart 1.0.8 or using PNG images rather than JPEG.

If it isn't either of those things, then I'm not sure.

i need clarification

Posted: Wed Apr 30, 2008 3:56 pm
by senthil
i have single suggestion :

David all the time when we are asking some issues while using jfrreechart
in jsp

you are saying that it should run in headless mode

but my question is

how it works fine at one time without headless mode in a server setting .how?

I am very eager to know when we can simulate this bug .....

i have already raised in genral forum , please response me ASP

Posted: Wed Apr 30, 2008 6:01 pm
by Taqua
Well, the ClientAbortException sends a clear message.

Your browser did not wait for the image to be sent completely. Maybe the user moved on to a different page, maybe the connection got dropped, whatever it was: You cannot do anything about it and headless mode has nothing to do with it.

HTTP is a network protocol, so you encounter connection errors from time to time. This particular exception is nothing you should worry about, it just tells you that the client went away. Ignore it.

Posted: Thu May 01, 2008 9:10 am
by david.gilbert
Taqua wrote:Well, the ClientAbortException sends a clear message.
Thanks Thomas, I should read the exceptions properly!

Re: problem when when writing the graph as PNG

Posted: Sat Dec 19, 2009 10:17 am
by ravikumar.palaparthi
Hi Snageshbabu,

I am also getting same problem.its running perfectly in my local system and not in production servers..can you tell me the proper fix for it ... please reply ASAP ....

mail id :: ravikumar.palaparthi@gmail.com

please see the following error msg ...

02:28:02,937 ERROR [STDERR] javax.imageio.IIOException: I/O error writing PNG file!
02:28:02,937 ERROR [STDERR] at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1116)
02:28:02,937 ERROR [STDERR] at javax.imageio.ImageWriter.write(ImageWriter.java:598)
02:28:02,937 ERROR [STDERR] at javax.imageio.ImageIO.write(ImageIO.java:1450)
02:28:02,937 ERROR [STDERR] at javax.imageio.ImageIO.write(ImageIO.java:1524)
02:28:02,937 ERROR [STDERR] at org.jfree.chart.encoders.SunPNGEncoderAdapter.encode(SunPNGEncoderAdapter.java:128)
02:28:02,937 ERROR [STDERR] at org.jfree.chart.encoders.EncoderUtil.writeBufferedImage(EncoderUtil.java:191)
02:28:02,937 ERROR [STDERR] at org.jfree.chart.ChartUtilities.writeBufferedImageAsPNG(ChartUtilities.java:654)
02:28:02,937 ERROR [STDERR] at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:212)
02:28:02,937 ERROR [STDERR] at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:144)
02:28:02,938 ERROR [STDERR] at com.vpo.dashboard.actions.Stats.makePieChart(Stats.java:243)
02:28:02,938 ERROR [STDERR] at com.vpo.dashboard.actions.ReportStats.service(ReportStats.java:55)
02:28:02,970 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
02:28:02,970 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.ja
va:290)

------------------------------------------------------
snageshbabu wrote:Hi,
I have a problem when i am calling a servlet from jsp through img tag.
The code is working fine when tested in local, but getting problem when i deployed on DEV.
This is the code in servlet..
OutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
out.close();

This is the error...

javax.imageio.IIOException: I/O error writing PNG file!
at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1116)
at javax.imageio.ImageWriter.write(ImageWriter.java:598)
at javax.imageio.ImageIO.write(ImageIO.java:1450)
at javax.imageio.ImageIO.write(ImageIO.java:1524)
at com.jpmorgan.mds.curvegraph.GraphAfterDF.doGet(GraphAfterDF.java:249)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.jpmorgan.janus.webagent.j2ee.JanusFilterAgent.doFilter(JanusFilterAgent.java:174)
at com.jpmorgan.janus.webagent.j2ee.JanusFilter.doFilter(JanusFilter.java:84)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:201)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.cluster.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:210)
at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Thread.java:595)
Caused by: ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98)
at javax.imageio.stream.FileCacheImageOutputStream.flushBefore(FileCacheImageOutputStream.java:214)
at com.sun.imageio.plugins.png.IDATOutputStream.finishChunk(PNGImageWriter.java:172)
at com.sun.imageio.plugins.png.IDATOutputStream.finish(PNGImageWriter.java:229)
at com.sun.imageio.plugins.png.PNGImageWriter.write_IDAT(PNGImageWriter.java:894)
at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1106)
... 24 more
Caused by: java.io.IOException
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:700)
at org.apache.coyote.http11.InternalAprOutputBuffer.flush(InternalAprOutputBuffer.java:288)
at org.apache.coyote.http11.Http11AprProcessor.action(Http11AprProcessor.java:967)
at org.apache.coyote.Response.action(Response.java:183)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
... 31 more
I guess its bug in jfreecharts.
Thanks for the help in Advance.
SNB