Hallo,
Ich verwende ein LineChart(wie in einem früheren posting erzählt) in meiner Struts WebApplication in einer jsp-Site. Dazu habe ich ein Servlet geschrieben, das das Chart in den outputstream schreibt. Dafür speichere ich das chart als attribut der session in der jsp-site und extrahiere das chart wieder im servlet aus der session. Das funktioniert ohne Probleme.
Aber wenn jetzt ein neues LineChart erstellt wird und auf der jsp-site angezeigt werden soll, wird für eine kurze Zeit das vorige LineChart angezeigt und nach kurzer Zeit durch das aktuelle LineChart ersetzt.
Ich habe das ganze nach dem folgenden Posting definiert:
http://www.jfree.org/phpBB2/viewtopic.php?t=9621&highlight=png
Ein Experte von JFreeChart hat mir aber erzählt dass das nichts mit JfreeChart zu tun hat sondern mit dem möglicherweise mehrfachen Zugriff auf das session object, aber er wußte den grund auch nicht genau. Ich habe es daher mal versucht das ganze innerhalb eines synchronized statement auszuführen und wie folgt definiert:
In der jsp-site:
Und im BinaryStreamServlet in der service method:
Aber das Problem ist noch immer da. Hat von euch vielleicht jemand eine Ahnung, was ich noch ausprobieren kann um das Problem zu lösen?? :bahnhof:
danke
lg
pat
Ich verwende ein LineChart(wie in einem früheren posting erzählt) in meiner Struts WebApplication in einer jsp-Site. Dazu habe ich ein Servlet geschrieben, das das Chart in den outputstream schreibt. Dafür speichere ich das chart als attribut der session in der jsp-site und extrahiere das chart wieder im servlet aus der session. Das funktioniert ohne Probleme.
Aber wenn jetzt ein neues LineChart erstellt wird und auf der jsp-site angezeigt werden soll, wird für eine kurze Zeit das vorige LineChart angezeigt und nach kurzer Zeit durch das aktuelle LineChart ersetzt.
Ich habe das ganze nach dem folgenden Posting definiert:
http://www.jfree.org/phpBB2/viewtopic.php?t=9621&highlight=png
Ein Experte von JFreeChart hat mir aber erzählt dass das nichts mit JfreeChart zu tun hat sondern mit dem möglicherweise mehrfachen Zugriff auf das session object, aber er wußte den grund auch nicht genau. Ich habe es daher mal versucht das ganze innerhalb eines synchronized statement auszuführen und wie folgt definiert:
In der jsp-site:
Code:
<%
synchronized(session)
{
ComputeCreditForm form = (ComputeCreditForm)request.getAttribute("computeCreditForm");
LineChart demo = new LineChart("");
CategoryDataset dataset = demo.createDataset(form.getYears(), form.getRate(), form.getAmount(), form.getNumber());
JFreeChart chart = demo.createChart(dataset);
session.setAttribute("LineChart", chart);
}
%>
[img]BinaryStreamServlet[/img]
Und im BinaryStreamServlet in der service method:
Code:
HttpSession session = req.getSession();
synchronized (session)
{
JFreeChart chart = (JFreeChart)session.getAttribute("LineChart");
// set the content type so the browser can see this as it is
res.setContentType( "image/png" );
// send the picture
BufferedImage buf = chart.createBufferedImage(640, 500, null);
PngEncoder encoder = new PngEncoder( buf, false, 0, 9 );
res.getOutputStream().write( encoder.pngEncode() );
}
Aber das Problem ist noch immer da. Hat von euch vielleicht jemand eine Ahnung, was ich noch ausprobieren kann um das Problem zu lösen?? :bahnhof:
danke
lg
pat