`
咖啡舞者
  • 浏览: 128731 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

BIRT 2.2.2 运行时使用已有的java.sql.Connection来生成报表

    博客分类:
  • JAVA
阅读更多

   注:本文实现的思路不是原创,思路原文来自:

http://birtworld.blogspot.com/2005/12/using-supplied-connection-with-birt.html

 

   本文将介绍BIRT2.2 详细的扩展与配置:

 

   在ECLIPSE中新建一个工程 new-> Bussiness Intelligence Report Tools -> Web Project 名字:MyBirt

并设置好服务器信息(本文选用Tomcat5.5、JDK1.5)。

   建好工程以后,需要添家JDBC驱动程序到报表引擎中,本例连接ORACLE,因此将ORACLE的JDBC驱动包复制到 工程站点下的 /WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_xxxxxxx/drivers目录下。

   接下来就是继承OdaJdbcDriver类了,再此之前需要在ClassPath中Add oda-jdbc.jar 和 org.eclipse.datatools.connectivity.oda_xxxxxxxxxxxx.jar这两个包,前者位于上边提到的drivers路径的上一级,后着则在plugins下。 新建一个Class:MyJdbcDriver,指定到某个包路径下,代码如下:

package com.wenmin.birt.data.oda.jdbc;

import org.eclipse.birt.report.data.oda.jdbc.OdaJdbcDriver;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Properties;

import org.eclipse.birt.report.data.oda.jdbc.*;
import org.eclipse.datatools.connectivity.oda.IConnection;
import org.eclipse.datatools.connectivity.oda.OdaException;

public class MyJdbcDriver extends OdaJdbcDriver 
{

	private Connection passedInConnection;
	public static final String DATASOURCE_KEY_CONNECTION = "com.wenmin.birt.data.odb.jdbc.MyJdbcDriver";
	
	public void setAppContext( Object context ) throws OdaException
	{
	    HashMap ctx = (HashMap)context;
	    passedInConnection = (java.sql.Connection)ctx.get(DATASOURCE_KEY_CONNECTION);
	
	}	
	
	public IConnection getConnection(String connectionClassName) throws OdaException
	{
		if( passedInConnection != null){
			return new appContextDBConnection();
		}else{
			return new org.eclipse.birt.report.data.oda.jdbc.Connection();
		}
	}
	


	private class appContextDBConnection extends org.eclipse.birt.report.data.oda.jdbc.Connection
	{
	
			
		public void open(Properties connProperties) throws OdaException
		{
			super.jdbcConn = passedInConnection;			
		
		}
		
		public void close( ) throws OdaException
		{
			if ( jdbcConn == null )
			{
				return;
			}
			//should have call to return connection to the pool
			jdbcConn = null;						
		}				
		
		
		
	}
}

 

OK,接下来我们来打个包,利用ECLIPSE EXPORT一个 jar包,(“怎么做?”,“。。。拖下去,暴头!”)。

本例导出包名字为:cst_driver.jar,拷贝到/WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_xxxxxxx/目录下。

      最后就是修改配置文件,第一个需要改的文件plugin.xml位于 /WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_xxxxxxx/目录下

找到如下节点:

...
<extension
         point="org.eclipse.datatools.connectivity.oda.dataSource">
      <dataSource
            odaVersion="3.1"
            driverClass="org.eclipse.birt.report.data.oda.jdbc.OdaJdbcDriver"
            defaultDisplayName="%datasource.name"
            setThreadContextClassLoader="false"
            id="%oda.data.source.id">
....

 

修改为:

...
<extension
         point="org.eclipse.datatools.connectivity.oda.dataSource">
      <dataSource
            odaVersion="3.1"
            driverClass="com.wenmin.birt.data.oda.jdbc.MyJdbcDriver"
            defaultDisplayName="%datasource.name"
            setThreadContextClassLoader="false"
            id="%oda.data.source.id">
...

 其他内容不需要改变。

 然后在META-INF下的MANIFEST.MF中找到如下位置,添加刚才导出的包cst_driver.jar

Bundle-ClassPath: oda-jdbc.jar,derby.jar,cst_driver.jar

 

大功告成,接下来在程序中使用:

//....   
     HashMap contextMap = new HashMap();   
    //...
     contextMap.put(MyJdbcDriver.DATASOURCE_KEY_CONNECTION, conn);  //conn为系统中获得的数据库连接
    task.setAppContext( contextMap );   //IRunAndRenderTask 
//...

 这样,无论在设计时指定了什么数据源,都会在运行时通过已有的conn连接数据库了。

 由于是这两天才接触的BIRT,文章有不足之处还请多多指正,谢谢。

分享到:
评论
2 楼 RogerTu 2008-07-02  
这种方式是变相修改BIRT自带的JDBC ODA Driver实现,也许能工作,但风险较大,例如会不会导致其他问题,在BIRT升级后依然有效吗等。

事实上,不久,BIRT就会支持通过传入java.sql.Connection实例的方式创建数据源了,见
https://bugs.eclipse.org/bugs/show_bug.cgi?id=236565

BIRT开发团队实际上就在国内:)推荐BIRT官方中文论坛:http://www.actuatechina.com/index.php
1 楼 RogerTu 2008-06-17  
通过变相修改BIRT自带的JDBC ODA Driver实现,也许能工作,但风险较大,例如会不会导致其他问题,在BIRT升级后依然有效吗等。

事实上,不久,BIRT就会支持通过传入java.sql.Connection实例的方式创建数据源了,见
https://bugs.eclipse.org/bugs/show_bug.cgi?id=236565

推荐BIRT官方中文论坛:http://www.actuatechina.com/index.php

相关推荐

    Java Web项目集成开源报表工具BIRT

    本文将指导读者如何将BIRT开源报表工具集成到已有的Java Web项目中,以Birt4.4.2为例。下面是具体的步骤和知识点: 步骤1:下载BIRT 首先,读者需要下载BIRT的最新版本。在BIRT官方网站...

    birt报表的动态sql

    2. **表达式构建器**:BIRT提供了表达式构建器,允许开发者使用Java脚本或JavaScript来创建复杂的逻辑表达式,这些表达式可以用于动态生成SQL的WHERE子句。比如,你可以根据用户的选择动态决定是否加入某些过滤条件...

    birt报表,很好的java报表插件

    BIRT(Business Intelligence and Reporting Tools)是开源的Java报表系统,由Eclipse基金会维护,它为开发者提供了一套强大的报告设计和数据可视化工具。在Java应用程序中集成BIRT,可以轻松实现复杂的数据分析和...

    maximo系统birt报表的eclipese开发配置及导入系统

    Maximo系统是一款企业资产管理和工单管理软件,而BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会的一个开源报表系统,用于生成动态、交互式的报表。本篇文章将详细介绍如何配置Eclipse开发环境...

    开源报表系统-birt-2_2_2.part2

    开源报表系统,需要两个分卷birt-2_2_2.part1与birt-2_2_2.part2

    org.eclipse.birt.runtime-4.4.2

    org.eclipse.birt.runtime-4.4.2.jar org.eclipse.birt.runtime-4.4.2-sources.jar org.eclipse.birt.runtime-4.4.2-javadoc.jar

    birt-runtime-4.8.0-20180626.zip

    5. **birt.war**:这是一个WAR(Web ARchive)文件,是Java Web应用程序的标准打包格式,包含了运行BIRT Web应用的所有必要文件,包括Servlets、JSPs、静态资源等。 6. **about_files**:可能是一个目录,包含了...

    birt报表资料_珍藏.rar

    4. **报表参数化**:BIRT允许添加参数,让用户在运行时输入特定值,从而实现报表的动态生成。这在【BIRT学习经历.doc】中可能有所提及,讲述了如何设置和管理报表参数,以满足不同场景的需求。 5. **部署与集成...

    birt报表 API 实例 1.rar

    BIRT(Business Intelligence and Reporting Tools)是开源的...总之,BIRT报表API提供了一种灵活且强大的方式来生成和控制报表,适用于各种企业级应用。通过深入理解和实践,开发者可以构建出满足复杂需求的报表系统。

    birt的jar包

    BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统项目,主要用于生成复杂的商业报告和数据可视化。在Java环境下,BIRT提供了一套API和可扩展的框架,使得开发者可以轻松地将...

    Birt报表操作手册

    在Birt报表操作手册中,_script编程是指使用Java脚本语言编写报表生成逻辑。_script编程可以用于实现复杂的报表生成逻辑,例如数据处理、数据转换、报表格式设置等。Birt报表操作手册提供了多种_script编程接口,...

    java做报表(birt).rar

    Java做报表工具BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,它为开发者提供了在Java和Web应用中创建复杂报表的能力。BIRT是Eclipse基金会的一部分,因此它具有良好的集成性和可扩展性...

    BIRT报表使用说明

    ### BIRT报表使用说明 #### 一、下载与安装BIRT相关软件 为了开始使用BIRT报表工具,首先需要下载并安装相应的软件。Eclipse Marketplace提供了BIRT Report Designer的下载链接,适合在Eclipse(包括MyEclipse)...

    birt报表参数的使用

    Birt报表参数可以在源代码级使用,例如使用Java代码来操作报表参数,实现报表的自动生成等功能。 Birt报表参数机制提供了一种灵活强大的机制,能够极大增强报表设计用户界面的交互性和灵活性。

    eclipse birt 常见问题及解决方法

    如果将BIRT报表集成到WEB项目中时遇到内存溢出的问题,可以通过调整Tomcat的JVM参数来解决。具体步骤如下: 1. 打开Tomcat安装目录下的`bin/catalina.bat`文件。 2. 在文件开头添加如下内容: ```bat set JAVA_...

    Birt报表开发JAVA

    总结来说,BIRT报表开发是一个涵盖了数据获取、报表设计、环境配置和运行时支持的综合性过程。通过预研,可以评估BIRT是否适合项目需求,以及如何有效地利用其特性来提升数据展现和分析的效率。

    在已有的jEE项目中加入 birt 报表

    在已有的Java EE(jEE)项目中集成BIRT(Business Intelligence and Reporting Tools)报表是一项常见的需求,这有助于为用户提供数据分析和可视化的功能。BIRT是开源的报告生成工具,可以方便地与Java应用程序结合...

    java报表 BIRT报表学习 指南

    BIRT 在Eclipse中以透视图(perspective )的方式显示。 使用Eclipse主菜单的(Window )选项打开它。 选择“打开透视图”(Open Perspective), 然后是“报表设计”(Report Design)。 如果“报表设计”(Report ...

Global site tag (gtag.js) - Google Analytics