JNDI是J2EE中一個(gè)很重要的標(biāo)準(zhǔn),通常我們是在J2EE編程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通過(guò)dbcp連接池,下面談一下我在Tomcat5.5中配置和使用JNDI的方法。本文的對(duì)象是對(duì)j2ee編程有所了解的讀者,或者已經(jīng)看過(guò)了我的Blog:tomcat的基本配置說(shuō)明
一、先在自己應(yīng)用程序WEB-INF目錄下的web.xml添加以下語(yǔ)句:
<resource-ref>
<descrtiption>引用資源說(shuō)明</descrtiption>
<res-ref-name>引用資源的JNDI名</res-ref-name>
<res-type>引用資源的類名</res-type>
<res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web應(yīng)用管理-->
</resource-ref>
然后在tomcat目錄/conf/server.xml文件里相應(yīng)的<Context>元素,看我的Blog:tomcat的基本配置說(shuō)明
添加如下子元素:
<Resource name="引用資源的JNDI名" auth="Container" type="javax.sql.DataSource"
driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驅(qū)動(dòng))"
url="jdbc:pointbase:server://localhost/acme(數(shù)據(jù)庫(kù)連接url)"
username="root(用戶名)" password="root(密碼)" maxActive="20(連接池dbcp的相關(guān)配置)" maxIdle="10" maxWait="10000"/>
注意,要把你的驅(qū)動(dòng)拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(對(duì)pointbase感興趣的讀者可以看我的另一篇文章pointbase數(shù)據(jù)庫(kù)學(xué)習(xí),里面也提到了我為什么是用pointbase數(shù)據(jù)庫(kù)作為講解)。
二、例子:以下是我的假設(shè)的項(xiàng)目ACMEWeb:
在相應(yīng)程序的web.xml里添加
<web-app ....>
.....
<resource-ref>
<res-ref-name>jdbc/AcmeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
然后再server.xml里修改:
<Context path="/ACMEWeb" reloadable="true" docBase="E:\eclipseproject\ACMEWeb" workDir="E:\eclipseproject\ACMEWeb\work">
<Resource name="jdbc/AcmeDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.pointbase.jdbc.jdbcUniversalDriver" url="jdbc:pointbase:server://localhost/acme" username="root" password="root" maxActive="20" maxIdle="10" maxWait="10000"/>
</Context>
建議你把上面的內(nèi)容編寫成為一個(gè)xml文件,拷到conf/Catalina/<主機(jī)名>/文件夾下,若有不懂的地方可以參考我的Blog:tomcat的基本配置說(shuō)明 和tomcat的文檔。
一、先在自己應(yīng)用程序WEB-INF目錄下的web.xml添加以下語(yǔ)句:
<resource-ref>
<descrtiption>引用資源說(shuō)明</descrtiption>
<res-ref-name>引用資源的JNDI名</res-ref-name>
<res-type>引用資源的類名</res-type>
<res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web應(yīng)用管理-->
</resource-ref>
然后在tomcat目錄/conf/server.xml文件里相應(yīng)的<Context>元素,看我的Blog:tomcat的基本配置說(shuō)明
添加如下子元素:
<Resource name="引用資源的JNDI名" auth="Container" type="javax.sql.DataSource"
driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驅(qū)動(dòng))"
url="jdbc:pointbase:server://localhost/acme(數(shù)據(jù)庫(kù)連接url)"
username="root(用戶名)" password="root(密碼)" maxActive="20(連接池dbcp的相關(guān)配置)" maxIdle="10" maxWait="10000"/>
注意,要把你的驅(qū)動(dòng)拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(對(duì)pointbase感興趣的讀者可以看我的另一篇文章pointbase數(shù)據(jù)庫(kù)學(xué)習(xí),里面也提到了我為什么是用pointbase數(shù)據(jù)庫(kù)作為講解)。
二、例子:以下是我的假設(shè)的項(xiàng)目ACMEWeb:
在相應(yīng)程序的web.xml里添加
<web-app ....>
.....
<resource-ref>
<res-ref-name>jdbc/AcmeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
然后再server.xml里修改:
<Context path="/ACMEWeb" reloadable="true" docBase="E:\eclipseproject\ACMEWeb" workDir="E:\eclipseproject\ACMEWeb\work">
<Resource name="jdbc/AcmeDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.pointbase.jdbc.jdbcUniversalDriver" url="jdbc:pointbase:server://localhost/acme" username="root" password="root" maxActive="20" maxIdle="10" maxWait="10000"/>
</Context>
建議你把上面的內(nèi)容編寫成為一個(gè)xml文件,拷到conf/Catalina/<主機(jī)名>/文件夾下,若有不懂的地方可以參考我的Blog:tomcat的基本配置說(shuō)明 和tomcat的文檔。