Tomcat下配置JNDI數據源的三種方法


 JNDI(Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應用中訪問命名和目錄服務的API。

 沒有使用JNDI時我用要這樣連接數據庫:

Connection conn=null;
try {
  Class.forName("com.mysql.jdbc.Driver");
  conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ssh");
  ......

傳統做法的缺點:

  (1) 鏈接的數據庫名稱、用戶名、密碼、驅動字符串寫在源碼裏,修改時要進行二次編譯; 寫在配置文件裏容易暴露給他人。

  (2) 改用其它產品的數據庫時,要在源碼上更改驅動名及驅動連接數據庫字符串及更換數據庫驅動。

  (3) 隨着實際使用終端的增加,原配置的連接池參數可能需要調整。

  (4) ......

 用了JNDI又是什麼樣子的呢.....

 首先:把mysql的驅動包加到Tomcat的lib文件夾下

 一、配置全局的JNDI

(1)在tomcat的conf文件夾下的context.xml配置文件中的 "Context" 標籤內加入如下代碼

<Resource name="jndi/myJNDI"   
            auth="iycao"   
            type="javax.sql.DataSource"   
            driverClassName="com.mysql.jdbc.Driver"   
            url="jdbc:mysql://localhost:3306/ssh"   
            username="root"   
            password="root"   
            maxActive="20"   
            maxIdle="10"   
            maxWait="10000"/> 

        (2)在要使用JNDI的項目中的web.xml文件中加如入下代碼

<resource-ref>  
	  <description>JNDI DataSource</description>  
	  <res-ref-name>jndi/myJNDI</res-ref-name>  
	  <res-ref-type>javax.sql.DataSource</res-ref-type>  
	  <res-auth>iycao</res-auth>  
  </resource-ref> 

       注:要保持res-ref-name值要和context.xml的name值一致


二、配置局部的JNDI方法1

       (1)在tomcat的server.xml的<host>標籤內添加如下語句

<Context path="/Jndi" docBase="/Jndi"> <!--Jndi代表的是引用的項目名--> 
			<Resource name="jndi/myJNDI"   
				auth="iycao"   
				type="javax.sql.DataSource"   
				driverClassName="com.mysql.jdbc.Driver"   
				url="jdbc:mysql://localhost:3306/ssh"   
				username="root"   
				password="root"   
				maxActive="20"   
				maxIdle="10"   
				maxWait="10000"/> 
        </Context>

        (2) 其它的步驟同上面的一樣

三、配置局部的JNDI方法2

       (1) 在項目的META-INFO下面新建context.xml,代碼如下

<?xml version="1.0" encoding="UTF-8"?>  
<Context>  
    <Resource name="jndi/myJNDI"   
				auth="iycao"   
				type="javax.sql.DataSource"   
				driverClassName="com.mysql.jdbc.Driver"   
				url="jdbc:mysql://localhost:3306/ssh"   
				username="root"   
				password="root"   
				maxActive="20"   
				maxIdle="10"   
				maxWait="10000"/>      
</Context>

總結:三種方法使用的頻率:1》3》2

   

 

發佈了39 篇原創文章 · 獲贊 3 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章