心無痕的博客

          常用鏈接

          統(tǒng)計

          積分與排名

          JAVA技術(shù)文檔

          JAVA精典網(wǎng)站

          開發(fā)工具

          數(shù)據(jù)庫

          最新評論

          用連接池配置BIRT報表的數(shù)據(jù)庫連接。。。。

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

           

          jdbc和jndi的區(qū)別

          JDBC -最基本的連接數(shù)據(jù)庫的方式, 每次對數(shù)據(jù)庫打交道的時候 ,連接數(shù)據(jù)庫是需要實例下你實現(xiàn)連接數(shù)據(jù)庫的方法或者類。
          JNDI DataSource 英文全稱是:Java Naming and Directory Interface java 命明接口,當服務啟動時 事先把連接數(shù)據(jù)庫的已經(jīng)連好多條,具體多少條你可以設置,存放在tomcat容器里,用的時候可以直接使用, 不用再實例化得到連接, 相對與jdbc效率要快點

           

           

          在eclipse設計報表的時候,我們使用jdbc鏈接數(shù)據(jù)庫做測試,當?shù)搅藅omcat運行環(huán)境中切換到jndi連接池,這是比較方便的開發(fā)方法。

          實現(xiàn)步驟:

          1.tomcat配置jndi連接池

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

          <?xml version="1.0" encoding="UTF-8"?>
          <Context>
           
          <Resource
                
          auth="Container"
                name
          ="jdbc/travel_agency"
                type
          ="javax.sql.DataSource"
                maxIdle
          ="5"
                maxWait
          ="-1"
             driverClassName
          ="com.mysql.jdbc.Driver"
                username
          ="itravel"
             password
          ="709394"
                url
          ="jdbc:mysql://192.168.1.100/travel_agency?useUnicode=true&amp;characterEncoding=UTF-8"
                maxActive
          ="10"/>
          </Context>

          2.在web.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.實例報表中數(shù)據(jù)源代碼

           

          1 <data-sources>
          2        <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="數(shù)據(jù)源" 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數(shù)據(jù)源,birt在運行報表的時候,會先用jndi去連接,如果失敗了再用jdbc鏈接,這樣做的好處就是,我們在開發(fā)報表的時候,沒有放到web環(huán)境中,可以使用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();

          }

          }

          }

          posted on 2009-04-07 13:32 心無痕 閱讀(2576) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 阿巴嘎旗| 抚松县| 利津县| 永顺县| 昌吉市| 深泽县| 太康县| 石泉县| 仁怀市| 独山县| 中山市| 铁岭县| 永德县| 南澳县| 稷山县| 景洪市| 高邮市| 囊谦县| 上虞市| 子长县| 金寨县| 高雄县| 乐清市| 米脂县| 健康| 罗源县| 阳东县| 黄龙县| 墨玉县| 营口市| 浙江省| 南丰县| 宁乡县| 普格县| 青铜峡市| 甘泉县| 贵阳市| 越西县| 辰溪县| 通河县| 新竹市|