2011-11-08 11 views
2

TomcatでホストされているWebアプリケーションのレポートを表示するには、birt 2.6.2レポートを使用しています。我々は<data-sources><oda-data-source> xml要素を含むreporting.rptlibraryファイルを持っています。その後、すべてのレポートデザインがそのreporting.rptlibraryを参照します。アプリケーションをデプロイするたびに、正しいjdbc接続情報を使用するようにreporting.rptlibraryを変更する必要があるため、これは面倒です。birtレポートエンジンでjdbc接続を設定するためのカスタマイズされたアプローチ

私たちのアプリは、接続オブジェクトが静的フィールドに格納されるように設定されており、アプリケーションは実行時にそのフィールドに直接アクセスします。 birtが静的フィールドにある接続オブジェクトを使用するように設定する方法はありますか?

私はthis blog postを見たことがありますが、私が探しているものに最も近いようですが、投稿は2005年に書かれており、Eclipseプラグインを作成する必要があると言いますウェブアプリの場合

また、birtとの接続プールの使用に関する記事もありますが、接続プーリングは使用していません。

この問題に役立つ場合は、大きな移行の手間を必要としない場合、私はbirt 3.7にアップグレードすることに心を開いています。レポートの場合

答えて

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コネクションを隠します。

+0

でこれを試してみてください。これに関する提案はありますか? –

+0

これは、失敗しているものがJava側から実行されていないようです。私は見続けるだろう。 –

+0

この接続はまだ使用されていません(少なくとも "dbprofile"データソースを使用している場合)。このヒントが動作するかどうかはわかりません(MavenリポジトリのBIRTランタイム3.7.2.v20120214-1408を使用)。 – Donatello

1

は、それは私の.rptlibaryファイルで宣言されたデータ・ソースを隠していないの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> 
関連する問題