JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通过dbcp连接池,下面谈一下我在Tomcat5.5中配置和使用JNDI的方法。本文的对象是对j2ee编程有所了解的读者,或者已经看过了我的Blog: tomcat的基本配置说明 
 一、先在自己应用程序WEB-INF目录下的web.xml添加以下语句:

<resource-ref>
 
    <descrtiption>引用资源说明</descrtiption>
 
    <res-ref-name>引用资源的JNDI名</res-ref-name>
 
    <res-type>引用资源的类名</res-type>
 
    <res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web应用管理-->
 
</resource-ref>


      然后在tomcat目录/conf/server.xml文件里相应的<Context>元素,看我的Blog: tomcat的基本配置说明
添加如下子元素:

<Resource name="引用资源的JNDI名" auth="Container" type="javax.sql.DataSource"
 
 driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驱动)"
 
 url="jdbc:pointbase:server://localhost/acme(数据库连接url)"
 
 username="root(用户名)" password="root(密码)" maxActive="20(连接池dbcp的相关配置)" maxIdle="10" maxWait="10000"/>


     注意,要把你的驱动拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(对pointbase感兴趣的读者可以看我的另一篇文章 pointbase数据库学习,里面也提到了我为什么是用pointbase数据库作为讲解)。
二、例子:以下是我的假设的项目ACMEWeb:
     在相应程序的web.xml里添加

<web-app ....> 
 
     .....
 
    <resource-ref>
 
    <description>Oracle Datasource ref</description>
 
    <res-ref-name>JNDI_DS_0</res-ref-name>
 
    <res-type>javax.sql.DataSource</res-type>
 
    <res-auth>Container</res-auth>
 
  </resource-ref>
 
</web-app>


     然后再server.xml里修改:

<Context path="/test" reloadable="true" docBase="G:\test\webapp\webapp"     
 
                >
 
             <Resource name="JNDI_DS_0" auth="Container" type="javax.sql.DataSource"    
 
                    driverClassName="oracle.jdbc.driver.OracleDriver" 
 
                    url="jdbc:oracle:thin:@127.0.0.1:1521:test" 
 
                    username="test" 
 
                    password="test" 
 
                    maxActive="15" 
 
                    maxIdle="5" 
 
                    maxWait="5000"/>
 
        </Context>


     建议你把上面的内容编写成为一个xml文件,拷到conf/Catalina/<主机名>/文件夹下,若有不懂的地方可以参考我的Blog: tomcat的基本配置说明 和tomcat的文档。