Индивидуальный подход к настройке соединения jdbc с помощью механизма отчетов birt - PullRequest
2 голосов
/ 09 ноября 2011

Мы используем отчеты birt 2.6.2 для отображения отчетов в нашем веб-приложении, размещенном на tomcat. У нас есть файл report.rptlibrary, который содержит элементы <data-sources> и <oda-data-source> xml. Впоследствии все проекты отчетов ссылаются на этот файл report.rptlibrary. Это хлопотно, потому что каждый раз, когда я развертываю приложение, мне нужно изменить файл report.rptlibrary, чтобы использовать правильную информацию о соединении jdbc.

Наше приложение настроено таким образом, что объект подключения хранится в статическом поле, и приложение получает доступ к этому полю непосредственно во время выполнения. Есть ли способ настроить birt для использования объекта подключения, который находится в статическом поле?

Я видел это сообщение в блоге , и, похоже, оно ближе всего к тому, что я ищу, но пост был написан в 2005 году и говорит, что мне нужно создать плагин Eclipse. , что не подходит для веб-приложения.

Я также вижу некоторые сообщения об использовании пула соединений с birt, но мы не используем пул соединений.

Я открыт для обновления до версии 3.7, если это поможет решить эту проблему и не потребует больших усилий по миграции.

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Для отчетов, запускаемых из кода 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 голос
/ 01 апреля 2014

попробуйте это в 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>
...