`
danwind
  • 浏览: 224499 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

birt配置动态数据源

    博客分类:
  • Java
阅读更多
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
这个不是由于驱动的关系,是报表设计动态数据源加载的问题。
分享到:
评论
1 楼 ayang722 2013-01-10  
首先就要在运行报表birt的IEngineTask中加入,
Java代码 
context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request );


请问,这个代码怎么加? 具体操作怎么完成 

相关推荐

    Spring Boot MyBatis配置Druid多数据源oracle《--》mysql test finally.rar

    参考这个https://mrbird.cc/Spring-Boot-MyBatis Druid.html做的 配置多个数据源同时访问mysql和oracle数据库 互相交换数据 个人学习用 仅供参考 欢迎指教

    蓝鸟网站流量统计系统源代码

    对源代码进行部分的修改、美化,但您不可以从本软件中去掉其版权声明; 并保证为其代码复制版权声明。您有义务向作者提供修改后的代码。在未经 作者本人同意或本站授权,任何人不得擅自将修改后的版本提供下载。 ...

    Pigeon:SwiftUI(和UIKit)的异步状态管理:bird:

    管理分页数据源 Pigeon不了解您用于获取数据的内容。 所有这些工作都针对使用非常方便的ObservableObject Combine协议的非常简单的接口。 什么是鸽子? 鸽子全是关于“查询和变异”的。查询是负责获取服务器数据的...

    基于arduino开源平台的兼容主板BlueBird(蓝鸟)原理图、固件共享-电路方案

    BlueBird(蓝鸟)是一款基于arduino开源平台的兼容主板,用户可以使用Arduino语言、processing来完成开发。 功能框图: 功能描述: 数字输入引脚:14个(其中包括6个带PWM功能引脚) 模拟输入引脚:8个(A0-A7) 电源...

    nltk:NLTK来源

    NLTK(自然语言工具包)是一套支持自然语言处理研究和开发的开源Python模块,数据集和教程。 NLTK需要Python版本3.5、3.6、3.7或3.8。 有关文档,请访问 。 贡献 您想为NLTK发展做出贡献吗? 大! 请阅读了解更多...

    vc++ 应用源码包_6

    vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本...

    vc++ 应用源码包_5

    vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本...

    基于YOLOv8的空中飞鸟检测预警系统源码(部署教程+训练好的模型+各项评估指标曲线).zip

    data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自行车检测模型时创建,训练其他模型,可自行创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238行,...

    vc++ 应用源码包_1

    vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本...

    vc++ 开发实例源码包

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    乐优商城.xmind

    使用默认配置,抛出异常之后,事务会自动回滚,数据不会插入到数据库。 setId(null) insert(brand) 新增中间表 mapper @Insert (#{cid},#{bid}) @Param 表示给参数命名,名称就是括号中的内容 name 命名为...

    vc++ 应用源码包_2

    vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本...

    vc++ 应用源码包_3

    vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本...

Global site tag (gtag.js) - Google Analytics