[導入]如何在Tomcat中定義JNDI數據源

          Posted on 2007-06-27 13:50 Java.net 閱讀(1086) 評論(0)  編輯  收藏

          網站:JavaEye 作者:jvincent 發表時間: 2007-06-27 13:50 此文章來自于 http://www.JavaEye.com
          聲明:本文系JavaEye網站原創文章,未經JavaEye網站或者作者本人書面許可,任何其他網站嚴禁擅自發表本文,否則必將追究法律責任!
          原文鏈接: http://xzgf.javaeye.com/blog/94619

          如何定義JNDI數據源 (抽取翻譯了一下Tomcat文檔的JNDI數據源的部分,不對的地方請指正..)


          內容提要:

          1、介紹

          2、數據連接池的配置

          3、不使用連接池的解決方案

          4、Oracle數據源配置舉例


          1、總體介紹 Introdution


          配置JNDI數據源是配置JNDI資源的一個特例,過程和方法都差不多..

          請注意:在Tomcat 5.0.x 和 Tomcat 5.5.x版本之間,JNDI資源的配置已經發生了變化,所以,如果你使用的是以上版本需要修改一下配置語法..

          本文假定你已經理解了Context和Host的配置,如果沒有,請自行學習..


          2、數據連接池的配置 Database Connection Pool(DBCP) Configurations


          DBCP提供了對JDBC2.0的支持,如果你使用的1.4版本JVM,DBCP將支持JDBC3.0..

          2.1 安裝 Installation

          DBCP使用Jakarta-Commons Database Connection Pool,它依賴以下三個包:

          Jakarta-Commons DBCP


          Jakarta-Commons Collections

          Jakarta-Commons Pool

          在Tomcat的安裝目錄提供了一個集成的jar包 $CATALINA_HOME/lib/tomcat-dbcp.jar..

          3 避免數據連接池泄露 Preventing DB connection pool leaks

          顧名思義,數據連接池負責創建和管理數據庫連接.重用一個已經存在的數據連接要比每次都打開新建(new)一個連接效率高的多..

          但連接池通常個問題:一個Web應用程序需要關閉ResultSet's,Statement's,Connections's等資源.如果應用程序關閉資源失敗,就是導致這些資源無法在被重用,即數據連接池泄露.最終如果沒有足夠的有效的連接,將導致應用程序連接失敗.

          對于這個問題有個解決方法;Jakarta-Commons的DBCP可以通過配置來跟蹤、恢復那些關閉失敗的連接.不但可以恢復,而且還可以生成堆棧軌跡..

          為了關閉和重用那個被遺棄的資源,可以在DBCP數據源的資源配置中加入一下屬性:


          xml 代碼




          1. removeAbandoned="true"  




          當有效的數據連接低于DBCP設置的時候,就會重用被遺棄的資源..默認是false;


          xml 代碼




          1. removeAbandonedTimeout="60"  




          設置被拋棄的數據連接在多少秒之后可以被刪除...默認是300秒.


          xml 代碼




          1. logAbandoned="true"  




          如果想要記錄下被拋棄數據連接的堆棧軌跡可以設為true..默認false;


          4、Oracle配置舉例

          Tomcat只能識別*.jar文件,如果數據庫驅動為*.zip,則需要修改擴展名為jar..對于Oracle9i應該使用 oracle.jdbc.OracleDriver,因為 oracle.jdbc.driver.OracleDriver 已經不建議使用..將來也不一定支持了..

          4.1 配置server.xml



          xml 代碼




          1. <Resource name="jdbc/myoracle" auth="Container"  
          2.               type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"  
          3.               url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"  
          4.               username="scott" password="tiger" maxActive="20" maxIdle="10"  
          5.               maxWait="-1"/>    


          4.2 配置web.xml


          xml 代碼




          1. <resource-ref>  
          2.  <description>Oracle Datasource exampledescription>  
          3.  <res-ref-name>jdbc/myoracleres-ref-name>  
          4.  <res-type>javax.sql.DataSourceres-type>  
          5.  <res-auth>Containerres-auth>  
          6. resource-ref>  


          4.3 代碼示例


          java 代碼




          1. Context initContext = new InitialContext();   
          2. Context envContext  = (Context)initContext.lookup("java:/comp/env");   
          3. DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");   
          4. Connection conn = ds.getConnection();   
          5. //etc.   


           英文原文地址:tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html 


           


          2007-06-27


          jvincent

           




          《 如何在Tomcat中定義JNDI數據源 》 的評論也很精彩,歡迎您也添加評論。查看詳細 >>

          推薦相關文章:
            IE7下不同用戶會共享同一個session會話的問題
            tomcat 內存溢出問題




          JavaEye推薦
          廣州:夢境網絡公司:薪水+期權誠聘高級人才 C++工程師 和 Java工程師
          北京:高薪誠聘Ruby on Rails高手: 月薪15-25K
          上海:尤恩斯國際集團:誠聘開發工程師
          北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA



          文章來源: http://xzgf.javaeye.com/blog/94619

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 千阳县| 黎川县| 伽师县| 永丰县| 黄平县| 鄂尔多斯市| 太和县| 赫章县| 新宾| 东辽县| 伊春市| 普宁市| 昌都县| 姚安县| 桂林市| 仙游县| 怀宁县| 牙克石市| 苍南县| 文化| 渝中区| 文昌市| 屯留县| 思南县| 定兴县| 南充市| 博野县| 乐陵市| 谢通门县| 靖宇县| 河南省| 盐亭县| 汾西县| 富阳市| 四会市| 乐昌市| 子洲县| 阿克| 靖远县| 石景山区| 四子王旗|