配置Tomcat的数据源.docx_第1页
配置Tomcat的数据源.docx_第2页
配置Tomcat的数据源.docx_第3页
配置Tomcat的数据源.docx_第4页
配置Tomcat的数据源.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

配置Tomcat的具有数据库连接池功能的JNDI数据源 从Tomcat5.5开始,Tomcat内置了DBCP(DataBaseConnectionPool数据库连接池)的数据源实现,所以可以非常方便地配置DBCP数据源。 Tomcat提供了两种配置数据源的方式,这两种方式所配置的数据源的访问范围不同:一种数据源可以让所有的Web应用都访问,被称为全局数据源;另一种只能在单个的Web应用中访问,被称为局部数据源。 不管配置哪种数据源,都需要提供特定数据库的JDBC驱动。这里以微软的MS SQL SERVER2014为例来配置数据源,所以读者必颁将MS SQL SERVER2014的JDBC驱动程序sqljdbc42.jar复制到应用的WEB-INF下的lib(如果要与其他应用共享,或放到Tomcat的lib)路径下。 局部数据源无须修改系统的配置文件,只需修改用户自己的Web应用部署文件,不会造成系统的混乱,而且数据源被封装在一个Web应用之内,防止被其他的Web应用访问,提供了更好的封装性。局部数据源只与特定的Web应用相关,因此在该Web应用对应的部署文件中配置。例如,为实验五(参看实验五,在网站2016中)增加局部数据源,修改Tomcat下conf/Catalina/localhost下的2016.xml文件即可(如果你使用MyEclipse,请先往下看)。为Context元素增加一个Resource子元素,增加局部数据源后的2016.xml文件内容如下:Context path=/2016 docBase=F:jiaoxuewebTech2016WebRoot reloadable=true crossContext=true Resource name=jdbcExperiment5DataSource auth=Container type=javax.sql.DataSource username=sa password=study2014 driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver:/localhost:1433;DatabaseName=experiment5 validationQuery=SELECT 1 testOnBorrow=true testOnReturn=false timeBetweenEvictionRunsMillis=30000 testWhileIdle=true minEvictableIdleTimeMillis=30000 maxWait=10000 maxActive=5 maxIdle=2 removeAbandonedTimeout=60 removeAbandoned=true logAbandoned=true / 上面的配置文件中粗体字标出的Resource元素就为该Web应用配置了一个局部数据源,该元素的各属性指定了数据源的各种配置信息。注意文件中的注释,指明了你要修改的内容。使用myEclipse工具做WEB应用项目的,局部数据源配置方法因为没有“网站虚拟目录名称.xml”这个配置文件,所以要另写一个名为Context.xml的配置文件(注意C为大写,不是小写),内容如下: Resource name=jdbcExperiment5DataSource auth=Container type=javax.sql.DataSource maxActive=100 maxIdle=30 maxWait=10000 username=sa password=study2014 driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver:/localhost:1433;DatabaseName= experiment5 / 把这个文件放到项目的META-INF(不是WEB-INF)目录中。下面给出上述两文件中的元素Resource下的各个属性的简单说明:name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,为了不与其他的名称混淆,使用jdbc数据库名DataSource,现在配置的是一个jdbc的关于数据库experiment5的数据源命名服务。auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效type:此名称所代表的类型,现在为javax.sql.DataSourcemaxActive:表示一个数据库在此服务器上所能打开的最大连接数maxIdle:表示一个数据库在此服务器上维持的最小连接数maxWait:最大等待时间。10000毫秒username:数据库连接的用户名password:数据库连接的密码driverClassName:数据库连接的驱动程序url:数据库连接的地址无论你正使用上面两种中的哪种方案,都还需修改你的web应用配置文件web.xml,在该文件中为web-app元素添加子元素resource-ref,resource-ref元素内容代码如下: DataBase Connection jdbcExperiment5DataSource javax.sql.DataSource Container 这一代码中的res-ref-name(资源名称)元素内容必须与前述两方案中的Resource元素中的name属性值一致,本例中是:jdbcExperiment5DataSource。本例的web.xml修改后看起来如下 2016web技术教学 这是web技术课程网站 index.html DataBase Connection jdbcExperiment5DataSource javax.sql.DataSource Container JNDI的全称是Java Naming Directory Interface,即Java命名和目录接口,听起来非常专业,其实很简单:就是为某个Java对象起一个名字。例如,上面JNDI的用途就是为Tomcat容器中的数据源起一个名字:jdbcExperiment5DataSource(这个名字是否这样取你可以自己定),从而让其他程序可以通过该名字来访问该数据源对象。再次启动Tomcat,该Web应用即可通过该JNDI名字来访问该数据源。配置完数据源连接池之后,就可以按照以下的步骤进行访问: 初始化名称查找上下文 通过JNDI名称找到DataSource 通过DataSource取得一个连接 操作数据库 关闭数据库,关闭的时候是将连接放回到连接池之中下面是测试页testConnPool.jsp代码: 连接池与数据源测试页 连接池与数据源测试页% String errDesc = ; Connection connSQLServer = null; Statement stmt = null; ResultSet rs = null; try /1、初始化名称查找上下文 Context ctx = new InitialContext(); /InitialContext ctx = new InitialContext();亦可 /2、通过JNDI名称找到DataSource, DataSource ds = (DataSource)ctx.lookup(java:comp/env/jdbcExperiment5DataSource); /* 对名称进行定位java:comp/env是必须加的,* 后面的jdbcExperiment5DataSource是DataSource名 * 此名在web.xml文件中的元素res-ref-name进行了配置 *jdbcExperiment5DataSource */ /3、通过DataSource取得一个连接 connSQLServer = ds.getConnection(); /out.println(SQLServer Connection pool connected !); /4、操作数据库 stmt = connSQLServer.createStatement(); String strSql = select * from dbo.users; rs = stmt.executeQuery(strSql); while(rs.next() out.print(用户名为: + rs.getString(1) + ); catch (NamingException e) errDesc = errDesc + NamingException: + e.toString(); /out.println(e.getMessage(); catch (SQLException e) errDesc = errDesc + SQLException: + e.toString(); /e.printStackTrace(); finally /5、关闭数据库,关闭的时候是将连接放回到连接池之中 if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (connSQLServer != null) connSQLServer.close(); out.print( + errDesc + );% 2.数据库连接类下面是访问前面部分tomcat数据源的数据库连接类的javaBean源码,这里取类名为DatabaseConnPool,文件DatabaseConnPool.java源码如下package experiment5.bean;import java.sql.*;import javax.naming.*;import javax.sql.DataSource;/一个用于查找数据源的工具类。public class DatabaseConnPool Connection connSQLServer = null; try /1、初始化名称查找上下文 Context ctx = new InitialContext(); /InitialContext ctx = new InitialContext();亦可 /2、通过JNDI名称找到DataSource, DataSource ds=(DataSource)ctx.lookup(java:comp/env/jdbcExperiment5DataSource);/* 对名称进行定位java:comp/env是必须加的,* 后面的jdbcExperiment5DataSource是DataSource名* 此名在web.xml文件中的元素res-ref-name进行了配置 *jdbcExperiment5DataSource */ /3、通过DataSource取得一个连接 connSQLServer = ds.getConnection(); out.println(SQLServer Connection pool connected !); /4、操作数据库 catch (NamingException e) System.out.println(e.getMessage(); catch (SQLException e) e.printStackTrace(); Finally /5、关闭数据库,关闭的时候是将连接放回到连接池之中 connSQLServer.close(); 上面注释语句代码实现了JNDI查找数据源对象,一旦获取了该数据源对象,程序就可以通过该数据源取得数据库连接,从而访问数据库。3.数据库操作类本数据库操作类继承自上述数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论