JNDI连接数据库-配置方法

 

<第一步>---context.xml 文件的配置

首先打开tomcat5.5 文件夹 C:\Program Files\Tomcat 5.5\conf 这是我的 tomcat 本机路径 在 conf 里有一个 context.xml 打开它,接着在<Context>....</Context>节点中添加 JNDI 配置文件<Resource..../>

例如: <!--addressBook 数据库 配置 JNDI -->
<Resource
name="jdbc/addressBook"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="sa"
password="luhaifeng"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;databaseName=addressBook" />

<Resource.../>里的属性介绍:
name: 指定 Resource 的 JNDI 名字
auth: 指定管理 Resource 的 Manager,它有两个可选值:Container 和 Application。Container 表示由容器来创建 Resource,Application 表示由 Web 应用来创 建和管理Resource
type: 指定 Resource 所属的 Java 类名
maxActive: 指定数据库连接池中处于活动状态的数据库连接的最大数目,取 值为 0,表示不受限制 maxIdle: 指定数据库连接池中处于空闲状态的数据库连接的最大数目,取 值为 0,表示不受限制 maxWait: 指定数据库连接池中的数据连接处于空闲状态的最长时间(以毫秒 为单位),超过这一时间将会抛出异常。 取值为-1,表示可以无限制等待
username: 指定连接数据库的用户名
password: 指定连接数据库的口令
driverClassName: 指定连接数据库的 JDBC 驱动程序
url: 指定连接数据库的 URL

<第二步>-----web.xml 文件的配置

配置好了 context.xml 后,我们现在就要配置我们自己项目中的 web.xml 文件了, 打开项目中WEB-INF\web.xml 文件中的<web-app>节点下添加 JNDI 配置文件 <resource-ref>....</resource-ref>

例如:
<!--addressBook 数据库 配置 JNDI -->
<resource-ref>
<description>addressBook DataSource</description>
<res-ref-name>jdbc/addressBook</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

<resource-ref.../>里的属性介绍:
description: 对所引用资源的说明 res-ref-name: 指定所引用资源的 JNDI 名字,与<Resource>元素中的 name 属性 对应
res-type: 指定所引用资源的类名字,与<Resource>元素中的 type 属性对应

res-auth: 指定管理所引用资源的 Manager,与<Resource>元素中的 auth 属性对应

<第三步>

 

-----添加数据库驱动文件 通过数据源访问数据库,由于数据源有 Tomcat 创建并维护,所以必须把 JDBC 驱动 程序复制到 Tomcat 的 common\lib 目录下面,*注意*Tomcat6.0 下没有 common 文 件,所有直接将 JDBC 驱动程序放在 lib 文件夹里。

<第四步>-----在程序里获取 Connection 对象

 

由于 DataSource 对象由 Web 容器(Tomcat)提供,因此不能在程序中采用创建一 个实例的方法来生成 DataSource 对象,而需要采用 Java 的另一个技术
JNDI(Java Naming and Directory Interface),来获得 DataSource 对象。 javax.naming.Context 提供了查找 JNDI Resource 的接口,

例如,可以通过一下代码获得名称为jdbc/addressBook 的数据源的引用:

Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.loopup("java:comp/env/jdbc/addressBook");
得到了 DataSource 对象后, 可以通过 DataSource 的 getConnection()方法来获得数 据库连接对象 Connection。 Connection conn=ds.getConnection();
lookup(String name) -----返回与指定的名字绑定的对象