網(wǎng)站:JavaEye 作者:jvincent 發(fā)表時(shí)間: 2007-06-27 13:50 此文章來自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://xzgf.javaeye.com/blog/94619

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


          內(nèi)容提要:

          1、介紹

          2、數(shù)據(jù)連接池的配置

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

          4、Oracle數(shù)據(jù)源配置舉例


          1、總體介紹 Introdution


          配置JNDI數(shù)據(jù)源是配置JNDI資源的一個(gè)特例,過程和方法都差不多..

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

          本文假定你已經(jīng)理解了Context和Host的配置,如果沒有,請(qǐng)自行學(xué)習(xí)..


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


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

          2.1 安裝 Installation

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

          Jakarta-Commons DBCP


          Jakarta-Commons Collections

          Jakarta-Commons Pool

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

          3 避免數(shù)據(jù)連接池泄露 Preventing DB connection pool leaks

          顧名思義,數(shù)據(jù)連接池負(fù)責(zé)創(chuàng)建和管理數(shù)據(jù)庫連接.重用一個(gè)已經(jīng)存在的數(shù)據(jù)連接要比每次都打開新建(new)一個(gè)連接效率高的多..

          但連接池通常個(gè)問題:一個(gè)Web應(yīng)用程序需要關(guān)閉ResultSet's,Statement's,Connections's等資源.如果應(yīng)用程序關(guān)閉資源失敗,就是導(dǎo)致這些資源無法在被重用,即數(shù)據(jù)連接池泄露.最終如果沒有足夠的有效的連接,將導(dǎo)致應(yīng)用程序連接失敗.

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

          為了關(guān)閉和重用那個(gè)被遺棄的資源,可以在DBCP數(shù)據(jù)源的資源配置中加入一下屬性:


          xml 代碼




          1. removeAbandoned="true"  




          當(dāng)有效的數(shù)據(jù)連接低于DBCP設(shè)置的時(shí)候,就會(huì)重用被遺棄的資源..默認(rèn)是false;


          xml 代碼




          1. removeAbandonedTimeout="60"  




          設(shè)置被拋棄的數(shù)據(jù)連接在多少秒之后可以被刪除...默認(rèn)是300秒.


          xml 代碼




          1. logAbandoned="true"  




          如果想要記錄下被拋棄數(shù)據(jù)連接的堆棧軌跡可以設(shè)為true..默認(rèn)false;


          4、Oracle配置舉例

          Tomcat只能識(shí)別*.jar文件,如果數(shù)據(jù)庫驅(qū)動(dòng)為*.zip,則需要修改擴(kuò)展名為jar..對(duì)于Oracle9i應(yīng)該使用 oracle.jdbc.OracleDriver,因?yàn)?oracle.jdbc.driver.OracleDriver 已經(jīng)不建議使用..將來也不一定支持了..

          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數(shù)據(jù)源 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>

          推薦相關(guān)文章:
            IE7下不同用戶會(huì)共享同一個(gè)session會(huì)話的問題
            tomcat 內(nèi)存溢出問題




          JavaEye推薦
          廣州:夢境網(wǎng)絡(luò)公司:薪水+期權(quán)誠聘高級(jí)人才 C++工程師 和 Java工程師
          北京:高薪誠聘Ruby on Rails高手: 月薪15-25K
          上海:尤恩斯國際集團(tuán):誠聘開發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開發(fā),系統(tǒng)管理,JAVA開發(fā), DBA



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

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 富锦市| 永安市| 金溪县| 徐州市| 罗田县| 东山县| 长岭县| 封丘县| 景宁| 连南| 胶南市| 旅游| 铜鼓县| 砚山县| 城固县| 梅河口市| 屯昌县| 濉溪县| 广宁县| 贞丰县| 龙口市| 汕头市| 大理市| 长治市| 修文县| 蒲江县| 重庆市| 绥滨县| 孙吴县| 二连浩特市| 乐陵市| 新密市| 临邑县| 明光市| 克什克腾旗| 舟山市| 隆林| 潼南县| 大洼县| 威海市| 寿阳县|