我们正在使用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版,并且不需要大量的迁移工作。
答案 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>