birt配置动态数据源

4. 使用birt的scrip读取配置文件动态的部署数据源
首先它可以分为配置文件路径是固定及不固定的(配置文件在项目目录中)。
4.1配置文件内容如下:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:tortrend
username=test
password=test

4.2文件路径固定的报表设计可以在数据源的beforeopen事件中添加如下代码:
importPackage( Packages.java.io );
importPackage( Packages.java.util );
fin = new java.io.FileInputStream(new String("d:/config.txt"));
props = new java.util.Properties( );

props.load(fin);
extensionProperties.odaDriverClass = new String(props.getProperty("driver"));
extensionProperties.odaURL = new String(props.getProperty("url"));
extensionProperties.odaUser = new String(props.getProperty("username"));
extensionProperties.odaPassword = new String(props.getProperty("password"));
fin.close();
注:首先要加入jdbc数据源而不是使用script数据源。
4.3如果配置文件是放到项目中的某个文件下,这时候的路径是变化的。
首先就要在运行报表birt的IEngineTask中加入,
context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request );

这样使报表文件可以获得request对象。
然后在报表设计界面点击空白出,然后在script中的initialize的事件中加入以下代码:
importPackage( Packages.java.io,Packages.java.util,Packages.java.net ); 
importPackage( Packages.javax.servlet.http );
req = reportContext.getHttpServletRequest();
propPath = new String("/WEB-INF/classes/config.txt");
url = req.getSession().getServletContext().getResource( propPath );
if ( url != null ) {
props = new java.util.Properties();
props.load( url.openStream() );
odaDriverClass = new String(props.getProperty("driver"));
odaURL = new String(props.getProperty("url"));
odaUser = new String(props.getProperty("username"));
odaPassword = new String(props.getProperty("password"));
}
最后在编辑数据源,选中property binding项,进行填写odaDriverClass、odaURL、odaUser、odaPassword的绑定即可。
注:这两类写法有四处是不一样的,第一在动态路径运行时报表要传递request对象,第二两处对象和事件是不一样的,第三动态路径时注意script的脚步是没有extensionProperties这个对象的。第四、动态路径要进行数据源的绑定操作。

遇到的问题:
birt中的script里获得request为空,获取失败
这是因为要在birt的IEngineTask中加入,
context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request );
Cannot open the connection for the driver: org.eclipse.birt.report.data.oda.jdbc.
Cannot load JDBC Driver class: org.mozilla.javascript.NativeJavaObject@193ee6b
这个不是由于驱动的关系,是报表设计动态数据源加载的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值