您的位置:首页 > 运维架构 > Tomcat

使用JNDI访问SQL Server数据库(tomcat服务器)

2016-05-15 18:13 549 查看
在使用开发工具开发项目的时候通常要访问数据库里面的数据,比较传统的方式是使用JDBC实现数据库的访问,为了简便和提高对数据库操作的性能,一种更简便的方式就是通过JNDI和数据库连接池来实现.

JNDI:Java命名与目录接口.是一种将对象和名字绑定的技术.使用JNDI应用程序可以通过名字获取对应的对象和服务.

数据库连接池是为了更好的管理与数据库的连接而产生的,工作原理与热线电话类似,允许用户重复使用一个现有的数据库连接,详情请百度.

数据源,负责建立与数据库的连接,应用程序可以直接从数据源中得到数据库连接.

访问数据库要配置两个文件context.xml和web.xml.

在tomcat服务器的文件目录中找到context.xml,打开之后在<Context>节点中添加<Resource>元素

<Resource name="jdbc/news" auth="Container"  
type="javax.sql.DataSource"  maxActive="100"  maxIdle="30"  
username="sa"  password="sa" dirverClassName="com.microsoft.sqlser.jdbc.SQLServerDriver"  
url="jdbc:sqlserver://localhost:1433;  DatabaseName=NewsManagerSystem"
/>
DataSource对象的Resource元素属性

name  指定Resource的JNDI名字

auth  指定Resource的Manager

type  指定Resource所属的Java类名

maxActive  指定数据库连接池中处于活动状态的数据库连接的最大数目

maxIdle  指定数据库连接中处于空闲状态的数据库连接的最大数目

maxWait  指定数据库连接池中数据库连接处于空闲状态的最长时间(以毫秒为时间)

username  指定连接数据库的用户名

password  指定连接数据库的密码

driverClassName  指定连接数据库的JDBC驱动

url  指定连接数据库的URL

web.xml文件的配置

在web.xml文件中的<web-app>节点下添加<resource-ref>元素

<resource-ref>
<description>news DataSource</description>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
resource-ref元素的属性

description  对所引用的资源的说明

res-ref-name  指定所引用资源的JNDI名字,与context.xml文件中<Resource>元素中的name属性对应

res-type  指定所引用资源的类名字,与context.xml文件中<Resource>元素中的type属性对应

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

数据源配置完成之后,要通过数据源访问数据库还要添加驱动文件,把驱动文件放到Tomcat的lib目录下

最后获取数据源对象完成数据库的连接

通过javax.naming.Context的lookup()方法查找JNDI Resource接口.

//初始化上下文
Context  c = new InitialContext();
//获取与逻辑名相关联的数据源对象
DataSource ds = (DataSource)c.loop("java:comp/env/jdbc/news");
通过DataSrouce对象获取数据库连接对象Connection

Connection conn = ds.getConnection();


当数据库访问结束后,应该及时的调用Connection的close()方法将Connection返回到数据库连接池中,可以使Connection恢复空闲状态

总结:使用JNDI获取数据源访问数据库,分为以下四步

1.配置context.xml和web.xml中的文件

2.添加驱动

3.编写代码,实现lookup()方法获得Connection对象进行数据库的访问


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: