程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Birt報表使用連接池配置

Birt報表使用連接池配置

編輯:關於JAVA

現階段我們在開發報表的時候,是使用jdbc鏈接數據庫的,為提高報表的運行效率和穩定性,使用連接池進行管理。比較簡便和低耦合的解決辦法,使用jndi連接池。

jdbc和jndi的區別

JDBC -最基本的連接數據庫的方式, 每次對數據庫打交道的時候 ,連接數據庫是需要實例下你實現連接數據庫的方法或者類。

JNDI DataSource 英文全稱是:Java Naming and Directory Interface java 命明接口,當服務啟動時 事先把連接數據庫的已經連好多條,具體多少條你可以設置,存放在tomcat容器裡,用的時候可以直接使用, 不用再實例化得到連接, 相對與jdbc效率要快點

在eclipse設計報表的時候,我們使用jdbc鏈接數據庫做測試,當到了tomcat運行環境中切換到jndi連接池,這是比較方便的開發方法。

實現步驟:

1.tomcat配置jndi連接池

在 {tomcat目錄}\webapps\{項目名}\META-INF 中新增context.xml文件,配置代碼如下

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

3.實例報表中數據源代碼

1 <data-sources>
2        <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="數據源" id="227">
3            <property name="odaDriverClass">com.mysql.jdbc.Driver</property>
4            <property name="odaURL">jdbc:mysql://192.168.1.100/travel_agency</property>
5            <property name="odaUser">itravel</property>
6            <encrypted-property name="odaPassword" encryptionID="base64">NzA5Mzk0</encrypted-property>
7            <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>
8        </oda-data-source>
9    </data-sources>

除了第7行 <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>,其余是我們的之前的配置。用了第7行的代碼,表示該報表支持jndi數據源,birt在運行報表的時候,會先用jndi去連接,如果失敗了再用jdbc鏈接,這樣做的好處就是,我們在開發報表的時候,沒有放到web環境中,可以使用jdbc,當放到tomcat中,因為有了第7行的配置。默認采用jdni連接。

4.步驟3中第6行密碼的生成程序(JAVA程序)

package com.hollycrm.birt.security;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import sun.misc.BASE64Encoder;
public class CreateBirtBase64Password {
public static void main(String[] args) {
InputStreamReader inStreamReader = new InputStreamReader(System.in);
BufferedReader buffReader = new BufferedReader(inStreamReader);
System.out.println("請輸入需要通過Base64加密的字符串:");
String strSrcPassword = null;
try {
strSrcPassword = buffReader.readLine();
if (strSrcPassword != null) {
// 通過用戶輸入的密碼信息生成Base64的加密密碼
String strBase64Password = new BASE64Encoder().encode(strSrcPassword.trim().getBytes());
System.out.println("您輸入的原始密碼為:" + strSrcPassword + "\r對應生成的Base64密碼值為:" + strBase64Password);
}
} catch (IOException e) {
e.printStackTrace();
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved