Java 中调用birt 的开发中遇到的问题和解决

最近在做birt的开发,想要用service的方式利用birt产生pdf文档。
于是就去http://www.eclipse.org/birt/phoenix/, 找了一些例子
在这个过程中,遇到了一个问题“Driver class not found in drivers directory” or "OutofMemory", 我的环境:
birt 2.2.1, eclipse 3.3.1, MySQL,  tomcat 1.5
我在网上找了些资料,大致的意思:当找不到你的db driver时, 通常是你没有把你的db driver 复制到oda.jdbc/drivers里去。即:copy  mysql-connector-java.jar  into  %BIRT_HOME%/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc/drivers
如果你用到tomcat, 则copy mysql-connector-java.jar into $tomcat_install_directory/webapps/birt-viewer/plugins/org.eclipse.birt.report.data.oda.jdbc/drivers

但问题依旧,后研究发现是DB connection 不能被释放,如下:
birt的应用通常分2种(不够全面)
1. 先是业务界面, 然后根据业务界面的数据产生报表(频率低)
2. 根据数据库里的值, 批量的生成报表(频率高)

task.run() -- will invoke "com.mysql.jdbc.Driver" to open connection
Platform.shutdown() -- will invoke "org.apache.derby.jdbc.EmbeddedDriver"

task.close(), engine.destroy() -- 都无法释放connection
所以当批量生成报表时,异常就被抛出了。

然而,我的应用是需要长期驻留的,so 当一个报表产生后我只做task.close(). 其他的保留,这样也可以加速下一个报表的产生. 而第一次的连接将被反复重用。

至于如何释放DB连接,还没有结果。

[由于是初次使用birt, 有不对的地方请慷慨赐教,请勿保留]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值