配置tomcat的数据源

上传人:第*** 文档编号:34064167 上传时间:2018-02-20 格式:DOCX 页数:7 大小:21.45KB
返回 下载 相关 举报
配置tomcat的数据源_第1页
第1页 / 共7页
配置tomcat的数据源_第2页
第2页 / 共7页
配置tomcat的数据源_第3页
第3页 / 共7页
配置tomcat的数据源_第4页
第4页 / 共7页
配置tomcat的数据源_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《配置tomcat的数据源》由会员分享,可在线阅读,更多相关《配置tomcat的数据源(7页珍藏版)》请在金锄头文库上搜索。

1、配置 Tomcat 的具有数据库连接池功能的 JNDI 数据源从 Tomcat5.5 开始,Tomcat 内置了 DBCP(DataBaseConnectionPool 数据库连接池)的数据源实现,所以可以非常方便地配置 DBCP 数据源。Tomcat 提供了两种配置数据源的方式,这两种方式所配置的数据源的访问范围不同:一种数据源可以让所有的 Web 应用都访问,被称为全局数据源;另一种只能在单个的Web 应用中访问,被称为局部数据源。不管配置哪种数据源,都需要提供特定数据库的 JDBC 驱动。这里以微软的 MS SQL SERVER2014 为例来配置数据源,所以读者必颁将 MS SQL S

2、ERVER2014 的 JDBC 驱动程序sqljdbc42.jar 复制到应用的 WEB-INF 下的 lib(如果要与其他应用共享,或放到 Tomcat 的lib)路径下。局部数据源无须修改系统的配置文件,只需修改用户自己的 Web 应用部署文件,不会造成系统的混乱,而且数据源被封装在一个 Web 应用之内,防止被其他的 Web 应用访问,提供了更好的封装性。局部数据源只与特定的 Web 应用相关,因此在该 Web 应用对应的部署文件中配置。例如,为实验五(参看实验五,在网站 2016 中)增加局部数据源,修改 Tomcat 下conf/Catalina/localhost 下的 2016

3、.xml 文件即可(如果你使用 MyEclipse,请先往下看) 。为Context 元素增加一个 Resource 子元素,增加局部数据源后的 2016.xml 文件内容如下:docBase=F:jiaoxuewebTech2016WebRootreloadable=truecrossContext=trueauth=Containertype=javax.sql.DataSourceusername=sapassword=study2014driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserv

4、er:/localhost:1433;DatabaseName=experiment5validationQuery=SELECT 1testOnBorrow=truetestOnReturn=falsetimeBetweenEvictionRunsMillis=30000testWhileIdle=true minEvictableIdleTimeMillis=30000maxWait=10000maxActive=5maxIdle=2removeAbandonedTimeout=60removeAbandoned=truelogAbandoned=true/上面的配置文件中粗体字标出的 R

5、esource 元素就为该 Web 应用配置了一个局部数据源,该元素的各属性指定了数据源的各种配置信息。注意文件中的注释,指明了你要修改的内容。使用 myEclipse 工具做 WEB 应用项目的,局部数据源配置方法因为没有“网站虚拟目录名称.xml” 这个配置文件,所以要另写一个名为 Context.xml 的配置文件(注意 C 为大写,不是小写) ,内容如下:auth=Containertype=javax.sql.DataSourcemaxActive=100maxIdle=30maxWait=10000username=sapassword=study2014driverClassNa

6、me=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver:/localhost:1433;DatabaseName= experiment5 /把这个文件放到项目的 META-INF(不是 WEB-INF)目录中。下面给出上述两文件中的元素 Resource 下的各个属性的简单说明:name:表示以后要查找的名称。通过此名称可以找到 DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,为了不与其他的名称混淆,使用 jdbc 数据库名 DataSource,现在配置的是一个jdbc 的关于数据库 exp

7、eriment5 的数据源命名服务。auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效type:此名称所代表的类型,现在为 javax.sql.DataSourcemaxActive:表示一个数据库在此服务器上所能打开的最大连接数maxIdle:表示一个数据库在此服务器上维持的最小连接数maxWait:最大等待时间。10000 毫秒username:数据库连接的用户名password:数据库连接的密码driverClassName:数据库连接的驱动程序url:数据库连接的地址无论你正使用上面两种中的哪种方案,都还需修改你的 web 应用配置文件 web.xml,在该文件中为

8、web-app 元素添加子元素 resource-ref,resource-ref 元素内容代码如下:DataBase ConnectionjdbcExperiment5DataSource javax.sql.DataSourceContainer这一代码中的 res-ref-name(资源名称)元素内容必须与前述两方案中的 Resource 元素中的 name 属性 值一致,本例中是: jdbcExperiment5DataSource。本例的 web.xml 修改后看起来如下2016web 技术教学这是web 技术课程网站index.htmlDataBase Connectionjdbc

9、Experiment5DataSource javax.sql.DataSourceContainer JNDI 的全称是 Java Naming Directory Interface,即 Java 命名和目录接口,听起来非常专业,其实很简单:就是为某个 Java 对象起一个名字。例如,上面 JNDI 的用途就是为Tomcat 容器中的数据源起一个名字:jdbcExperiment5DataSource(这个名字是否这样取你可以自己定) ,从而让其他程序可以通过该名字来访问该数据源对象。再次启动 Tomcat,该 Web 应用即可通过该 JNDI 名字来访问该数据源。配置完数据源连接池之后,

10、就可以按照以下的步骤进行访问: 初始化名称查找上下文 通过 JNDI 名称找到 DataSource 通过 DataSource 取得一个连接 操作数据库 关闭数据库,关闭的时候是将连接放回到连接池之中下面是测试页 testConnPool.jsp 代码:连接池与数据源测试页连接池与数据源测试页jdbcExperiment5DataSource*/3、通过 DataSource 取得一个连接connSQLServer = ds.getConnection();/out.println(SQLServer Connection pool connected !);/4、操作数据库stmt = c

11、onnSQLServer.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

12、 + 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,文件 Databa

13、seConnPool.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 名称

14、找到 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.pri

15、ntln(SQLServer Connection pool connected !);/4、操作数据库catch (NamingException e)System.out.println(e.getMessage(); catch (SQLException e)e.printStackTrace();Finally/5、关闭数据库,关闭的时候是将连接放回到连接池之中connSQLServer.close();上面注释语句代码实现了 JNDI 查找数据源对象,一旦获取了该数据源对象,程序就可以通过该数据源取得数据库连接,从而访问数据库。3.数据库操作类本数据库操作类继承自上述数据库连接类(DatabaseConnPool.java ) ,其主要功能是提供对数据库的所有操作,包括查询、插入、删除、更新等操作。系统中所有功能页面都不直接调用数据库连接类(DatabaseConnPool.java) ,而是通过数据库操作类(DatabaseExecute.java)执行对数据库的操作。系统中所有对数据库的操作都需要调用到这个类。本数据库 experiment5 只有一个表 users(当然你可以在其中建更多的表) ,所以这个操作类以表 users 为例Users 数据表操作类(UsersExecute.java)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号