JFreeChartで生成したグラフをServletで出してみる(JFreechart 0.9.16)
グラフをただ出すだけなら,JFreeChartとServletそれぞれに関して若干の知識があればどうってことなくできる気がするが,確認のためにグラフをただ出してみた.
本頁のサンプルは本当にグラフをただ出すだけである.JFreeChartオブジェクトは以前作成した棒グラフを出力するサンプルを流用する.
クエリにwidth,heightを使用して出力するグラフの縦横サイズを指定できる(デフォルトはそれぞれ640).で,このServletにアクセスすると,いつも決まったグラフが指定したサイズで出力される.注意点は
res.setContentType("image/png");
等としてコンテンツタイプを指定し,それに合わせて
ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);とグラフを出力する点である.
JFreeChartでJFreeChartを生成する際には,おそらく必ずSwingやAWTを使用する.ウィンドウを出す/出さないにかかわらずである.で,Xが動いていないマシンで上のサンプルを起動すると,以下のような例外が発生してうまく動かなかった.
2004-06-23 21:09:51 simple_chart_servlet: init 2004-06-23 21:09:58 StandardWrapperValve[simple_chart_servlet]: Servlet.service() for servlet simple_chart_servlet threw exception javax.servlet.ServletException: Servlet execution threw an exception .... ----- Root Cause ----- java.lang.InternalError: Can't connect to X11 window server using 'xserver:0.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:125)上は環境変数DISPLAYをxserver:0.0と設定してTomcatを起動した場合の例である.Tomcatを起動する環境がXサーバと通信できるようにすれば,うまく起動しグラフも出力された.

