使用birt报告引擎设置jdbc连接的自定义方法

时间:2011-11-08 20:59:03

标签: birt

我们正在使用birt 2.6.2报告在我们的tomcat托管网络应用中显示报告。我们有一个reporting.rptlibrary文件,其中包含<data-sources><oda-data-source> xml元素。随后,所有报告设计都引用了reporting.rptlibrary。这很麻烦,因为每次部署应用程序时,我都需要更改reporting.rptlibrary以使用正确的jdbc连接信息。

我们的应用程序已设置为连接对象存储在静态字段中,应用程序在运行时直接访问该字段。有没有办法配置birt来使用位于静态字段中的连接对象?

我见过this blog post,它似乎最接近我正在寻找的东西,但这篇文章是在2005年写的,它说我需要创建一个eclipse插件,它没有'似乎适合网络应用。

我也看到一些关于使用birt连接池的帖子,但是我们没有使用连接池。

如果能帮助解决这个问题,我很乐意升级到第3.7版,并且不需要大量的迁移工作。

2 个答案:

答案 0 :(得分:3)

对于从Java代码运行的报告,以下是在2.6.2和3.7.0中使用的解决方案:

import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import java.sql.Connection
...
IRunAndRenderTask task; //or IRunTask, when run+render invoked separately
Connection connection;
...
Map<String, Object> appContext = task.getAppContext();
appContext.put("OdaJDBCDriverPassInConnection", connection);
appContext.put("OdaJDBCDriverPassInConnectionCloseAfterUse", false);
task.setAppContext(appContext);
...
task.run()

传入连接以报告和替换/隐藏报表设计中定义的所有JDBC连接。

答案 1 :(得分:1)

在xml中尝试这个

<data-sources>
        <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="fitupvisualdatasource" id="365">
            <list-property name="privateDriverProperties">
                <ex-property>
                    <name>metadataBidiFormatStr</name>
                    <value>ILYNN</value>
                </ex-property>
                <ex-property>
                    <name>disabledMetadataBidiFormatStr</name>
                </ex-property>
                <ex-property>
                    <name>contentBidiFormatStr</name>
                    <value>ILYNN</value>
                </ex-property>
                <ex-property>
                    <name>disabledContentBidiFormatStr</name>
                </ex-property>
            </list-property>
            <property name="odaDriverClass">org.postgresql.Driver</property>
            <property name="odaURL">jdbc:postgresql://localhost:5432/acctsql_whs</property>
            <property name="odaUser">apoel</property>
            <encrypted-property name="odaPassword" encryptionID="base64">cXdlcnR5</encrypted-property>
        </oda-data-source>
    </data-sources>