首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

BIRT 報表整合 JNDI 連線池配置詳解

     編輯:Java 相關知識

BIRT 報表開發期常用 JDBC 直連測試,正式部署建議切換至 JNDI DataSource,由容器管理連線池,提升效能與穩定性。本文說明 Tomcat + BIRT 整合步驟。

一、JDBC vs JNDI 差異

  • JDBC:每次請求建立新連線,開銷大,難以控制連線數。
  • JNDI DataSource:容器啟動時預建連線池,請求直接取用,回收快,支援事務管理與監控。

二、Tomcat 配置 JNDI

在專案 META-INF/context.xml 定義資源:

<Resource name="jdbc/travel_agency"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="20"
          maxIdle="10"
          maxWait="-1"
          username="itravel"
          password="709394"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://192.168.1.100/travel_agency"/>

web.xml 宣告資源參考:

<resource-ref>
    <res-ref-name>jdbc/travel_agency</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

三、BIRT 報表資料源切換

報表設計檔 (.rptdesign) 的 XML 片段:

<data-sources>
  <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc"
                   name="資料源" id="227">
    <property name="odaDriverClass">com.mysql.jdbc.Driver</property>
    <property name="odaURL">jdbc:mysql://192.168.1.100/travel_agency</property>
    <property name="odaUser">itravel</property>
    <encrypted-property name="odaPassword" encryptionID="base64">NzA5Mzk0</encrypted-property>
    <!-- 關鍵:指定 JNDI 名稱 -->
    <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>
  </oda-data-source>
</data-sources>

執行邏輯:BIRT 先嘗試 JNDI,失敗才回退 JDBC,開發/生產環境無縫切換。

四、密碼 Base64 加密工具

BIRT 要求密碼加密存放,提供 Java 產生器:

package com.hollycrm.birt.security;
import java.io.*;
import sun.misc.BASE64Encoder;

public class CreateBirtBase64Password {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("請輸入需加密字串:");
        String pwd = br.readLine();
        if (pwd != null) {
            String enc = new BASE64Encoder().encode(pwd.trim().getBytes());
            System.out.println("原始:" + pwd + "\nBase64:" + enc);
        }
    }
}

執行後將輸出值填入 odaPassword。

五、驗證部署

  1. 將 MySQL Driver (mysql-connector-java.jar) 放入 tomcat/lib。
  2. 啟動 Tomcat,檢查 JNDI 資源是否綁定成功(管理主機 /resources)。
  3. 部署 BIRT Viewer WAR,測試報表預覽。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved