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