关于Domino支持java的方式有java代理和servlet两种,本例采用的是servlet方式,至于能否采用Agent方式,没有研究过。
要使Domino支持servlet且servlet程序能使用jfreechart,需:
1.确认Domino服务器已经开启了“java服务器小程序”支持;
2.必需将jfreechart-1.0.9.jar和jcommon-1.0.12.jar两个包放到服务器的库路径,并修改服务器上notes.ini的相应参数。当然,要使这些配置生效,还需要重启http服务。
以下是具体实现的步骤。
1.新建一个查询生成统计图的表单,测试用例,这里构造了一个简单的查询统计条件:
A.2个计算的值分别引用img_kpi和img_stf两个域的值,用来显示两个统计图;
B.查询按钮只是个简单的赋值动作(NsfMis400Chart即为访问的servlet名):
@SetField("img_kpi";"<img src=\"/servlet/NsfMis400Chart?method=ma&tm=" + curmonth + "\" />");
@SetField("img_stf";"<img src=\"/servlet/NsfMis400Chart?method=mb&tm=" + curmonth + "\" />")
2.编写生成统计图的servlet(NsfMis400Chart.java),代码太长,大致描述下过程:
A.在请求的方法中设置响应返回类型response.setContentType("image/png"),这里建议设置为PNG格式,不要设置为JPG格式;
B.在servlet中访问需要统计Domino数据库,得到统计结果的数据集dataset,关于在servlet中如何访问Domino数据库,可参考其它资料;
C.利用jfreechart的ChartUtilities类的writeBufferedImageAsPNG方法,将数据集生成统计图写入到servlet输出流中,最后记得要关掉这个输出流。
3.编译NsfMis400Chart.java文件,生成class文件。当然在eclipse等IDE下开发会自动编译源文件,但是有一点需特别注意,不同版本的Domino自带不同的JDK,具体的对应关系是,Domino R6支持JRE1.4,Domino R7支持JRE1.5(JDK5.0),Domino R8支持JRE1.6(JDK6.0),在不同版本的服务器上运行servlet需要用不同版本的编译器编译java源文件。
4.将编译生成的class文件放到服务器设置的servlet目录,一般为服务器数据目录下的domino\servlet,重启HTTP服务后,此servlet即可通过URL访问。
最后生成的统计图效果如: