• 1. TOMCAT数据源配置和使用
  • 2. 目标理解为什么要使用数据源 JNDI数据源的配置 在java程序中使用数据源
  • 3. 企业级开发对Model层的要求 企业级开发需要稳健和高效的数据访问层 完成对数据库的CRUD操作 能够处理数据库发生的各种错误 可以灵活的修改配置 提供方便使用的工具 高性能数 据 库请求响应操作结果要求高效、稳健的数据访问层打开连接,操作数据库,关闭连接多次重复操作传统的JDBC已经无法满足需求,那怎么办呢?
  • 4. 数据库连接池(2-1)普通电话 ----建立连接,等待回应 热线电话 ----已建立连接 连接已连接开始通话开始通话已连接,直接通话连接中
  • 5. 流程框架图标使用规范 连接池中的连接数 据 库想要获得连接返回一个连接返回一个已连接好的空闲连接应用程序从连接池中获得连接连接池是由容器提供的,用来管理池中连接对象应用程序连接池Connection1Connection2Connection3
  • 6. 数据源简介 数据源(DataSource) javax.sql.DataSource接口负责建立与数据库的连接 从Tomcat的数据源获得连接 把连接保存在连接池中应用程序Connection1Connection2Connection3数 据 库想要获得连接返回一个连接连接池连接池中的连接对象 是由谁创建的呢?
  • 7. JNDI介绍 如何获得DataSource对象 数据源由Tomcat提供,不能在程序中创建实例 使用JNDI获得DataSource引用 什么是JNDI JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API javax.namming.Context接口的lookup()方法应用程序jdbc/s1jdbc/s2数据源数据源名称Connectioncontext.lookup(" jdbc/s1 ")
  • 8. 使用JNDI获取连接对象import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class TitlesBean { public List getTitles() { try { Context ic = new InitialContext(); DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/books"); Connection connection = source.getConnection(); titlesQuery = connection.prepareStatement("SELECT * FROM titles "); ResultSet results = titlesQuery.executeQuery(); //为BookBean对象的属性赋值,并添加到titlesList中 } catch (SQLException exception) { exception.printStackTrace(); }catch (NamingException namingException) namingException.printStackTrace(); }finally{ closeConn(); } } }使用JNDI和数 据源要导入的包通过Context、DataSource 获取Connection对象分为两部分java:comp/env 为JavaEE默认路径 jdbc/books为DataSource名定义JNDI异常演示示例1:JNDI的使用TitlesBean.java
  • 9. JNDI的配置 Tomcat的conf/context.xml中的配置属性名称说明name指定Resource的JNDI名称auth指定管理Resource的Manager(Container:由容器创建和管理|Application:由Web应用创建和管理)type指定Resource所属的Java类maxActive指定连接池中处于活动状态的数据库连接的最大数目maxIdle指定连接池中处于空闲状态的数据库连接的最大数目maxWait指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待
  • 10. JNDI的配置 加入数据库驱动文件 把数据库驱动的.jar文件,加入到Tomcat的common\lib中 应用程序的web.xml文件的配置 在web.xml中配置 jdbc/books javax.sql.DataSource Container 指定JNDI的名字,与元素中的name一致指定引用资源的类名,与 元素中的type一致指定管理所引用资源的Manager与元素中的auth一致
  • 11. 常见错误1、Cannot load JDBC driver class 这是什么错误?通过数据源访问数据库,由于数据源由Tomcat创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat的common/lib目录下。
  • 12. 代码框图标使用规范2、Cannot create JDBC driver of class ‘ ’ for connect URL ‘null’ DataSource source = (DataSource) ic.lookup("java:comp/env/jdbc/books"); connection = source.getConnection(); titlesQuery = connection.prepareStatement(“SELECT * FROM titles ");要一致这是什么错误?TitlesBean.javacontext.xml
  • 13. 常见错误3、Name jdbc is not bound in this Context DataSource source = (DataSource) ic.lookup("/jdbc/books"); connection = source.getConnection();这是什么错误?参数错误,应该是 " java:comp/env/jdbc/books "