当前位置: 代码迷 >> Web前端 >> JNDI 配备方法
  详细解决方案

JNDI 配备方法

热度:876   发布时间:2012-07-03 13:37:43.0
JNDI 配置方法

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?和?ApplicationContainer?表示由容器来创建?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)?-----返回与指定的名字绑定的对象

  相关解决方案