JNDI是JEE中一个很重要的标准通常我们是在JEE编程中用到Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法主要是通过dbcp连接池下面谈一下我在Tomcat中配置和使用JNDI的方法本文的对象是对jee编程有所了解的读者或者已经看过了我的Blogtomcat的基本配置说明
一先在自己应用程序WEBINF目录下的webxml添加以下语句
<resourceref>
<descrtiption>引用资源说明</descrtiption>
<resrefname>引用资源的JNDI名</resrefname>
<restype>引用资源的类名</restype>
<resauth>管理者(Container)</resauth><!Container-容器管理 Application-Web应用管理>
</resourceref>
然后在tomcat目录/conf/serverxml文件里相应的<Context>元素看我的Blogtomcat的基本配置说明
添加如下子元素
<Resource name=引用资源的JNDI名 auth=Container type=javaxsqlDataSource
driverClassName=compointbasejdbcjdbcUniversalDriver(自己的jdbc驱动)
url=jdbc:pointbase:server://localhost/acme(数据库连接url)
username=root(用户名) password=root(密码) maxActive=(连接池dbcp的相关配置) maxIdle= maxWait=/>
注意要把你的驱动拷到common/lib下我用的是pointbase因此我拷的是pbclientjar到了common/lib下(对pointbase感兴趣的读者可以看我的另一篇文章pointbase数据库学习里面也提到了我为什么是用pointbase数据库作为讲解)
二例子以下是我的假设的项目ACMEWeb
在相应程序的webxml里添加
<webapp >
<resourceref>
<resrefname>jdbc/AcmeDB</resrefname>
<restype>javaxsqlDataSource</restype>
<resauth>Container</resauth>
</resourceref>
</webapp>
然后再serverxml里修改
<Context path=/ACMEWeb reloadable=true docBase=E:\eclipseproject\ACMEWeb workDir=E:\eclipseproject\ACMEWeb\work>
<Resource name=jdbc/AcmeDB auth=Container type=javaxsqlDataSource driverClassName=compointbasejdbcjdbcUniversalDriver url=jdbc:pointbase:server://localhost/acme username=root password=root maxActive= maxIdle= maxWait=/>
</Context>
建议你把上面的内容编写成为一个xml文件拷到conf/Catalina/<主机名>/文件夹下若有不懂的地方可以参考我的Blogtomcat的基本配置说明 和tomcat的文档