中文:java名稱(chēng)目錄接口 一種技術(shù)
2.JNDI做什么,?
JNDI可以把java應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)管理和配置交給存放java應(yīng)用的服務(wù)器(tomcat)。
3.沒(méi)有JNDI之前,?
JDBC連接數(shù)據(jù)庫(kù),java應(yīng)用程序與mysql提供的驅(qū)動(dòng)程序關(guān)聯(lián) 映射一個(gè)Driver的Class對(duì)象(Driver的path:com.mysql.jdbc.Driver)
然后用java提供的DriverMannager管理類(lèi)調(diào)用getConnection("jdbc:mysql://localhost:8080/數(shù)據(jù)庫(kù)名字","用戶(hù)名","密碼")方法
獲得一個(gè)connection連接對(duì)象,,說(shuō)明java與指定數(shù)據(jù)庫(kù)建立連接,。
缺點(diǎn):
*當(dāng)所有程序調(diào)試完成后,所有java源文件形成jar包,,如果數(shù)據(jù)庫(kù)類(lèi)型改變orcal或用戶(hù)名改變,,必須改源代碼
4.有JNDI之后
把變化的地方交給服務(wù)器來(lái)設(shè)置建立一個(gè)數(shù)據(jù)源,需要JDBC建立連接時(shí)引用,,交給服務(wù)器管理配置,,如果java應(yīng)用程序需要就去那一個(gè)
5.使用JNDI建立數(shù)據(jù)庫(kù)連接池
第一步:安裝java應(yīng)用服務(wù)器根目錄找到conf文件夾里放的服務(wù)器上下文配置文件context編輯后增加數(shù)據(jù)源代碼:
<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"http://數(shù)據(jù)源名字 驗(yàn)證數(shù)據(jù)源的容器 類(lèi)型
maxActive="100" maxIdle="30" maxWait="10000" username="root"http://最大連接數(shù)據(jù)庫(kù)連接對(duì)象的數(shù)量100 最大空閑數(shù)是30(例如50個(gè)空閑等待N時(shí)間后變成maxWait狀態(tài))數(shù)據(jù)庫(kù)用戶(hù)名
password="123" driverClassName="com.mysql.jdbc.Driver" //數(shù)據(jù)庫(kù)密碼 驅(qū)動(dòng)程序名稱(chēng)(mysql提供)
url="jdbc:mysql://localhost:3306/newsdb?useUnicode=true&characterEncoding=utf8"http://創(chuàng)建連接的路徑,編碼格式UTF-8
/>
第二步:把java即將操作的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)文件導(dǎo)入java應(yīng)用服務(wù)器,,粘貼至java應(yīng)用服務(wù)器根目錄lib文件夾(作用放程序需用引用的jar包),,放入此包的jar
java應(yīng)用服務(wù)器上所有項(xiàng)目都可以用。
第三步:web項(xiàng)目上web.xml進(jìn)行注冊(cè):
<resource-ref>
<res-ref-name> jdbc/news </res-ref-name>//名字與數(shù)據(jù)源名字一致
<res-type> javax.sql.DataSource </res-type>//類(lèi)型:DateSource
<res-auth> Container </res-auth>
</resource-ref>
第四步:java應(yīng)用程序處引用數(shù)據(jù)源
Context ic=new InitialContext();//接口,、實(shí)現(xiàn)類(lèi)
DataSource source=(DataSource)ic//實(shí)現(xiàn)類(lèi)對(duì)象.lookup("java:comp/env/jdbc/news");//調(diào)用lookup方法返回一個(gè)數(shù)據(jù)源類(lèi)型DateSource
conn=source.getConnection();//生成JDBC連接對(duì)象