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