数据库_jdbc_连接池(Tomcat创建)
来源:互联网 发布:yy视频下载软件 编辑:程序博客网 时间:2024/05/21 21:36
Dao位于dao包
package cn.itcast.dao;import java.sql.Connection;import java.sql.SQLException;import cn.itcast.exception.DaoException;import cn.itcast.utils.JdbcUtils_Tomcat;public class Dao {public void add(){ Connection conn; try { conn = JdbcUtils_Tomcat.getConnection(); System.out.println(conn); //jdbc:mysql://localhost:3306/day16, UserName=root@localhost, MySQL-AB JDBC Driver System.out.println(conn.getClass().getName()); //org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper } catch (SQLException e) { throw new DaoException(); } }}
DaoException位于exception
package cn.itcast.exception;import java.io.PrintStream;import java.io.PrintWriter;public class DaoException extends RuntimeException { @Override public synchronized Throwable fillInStackTrace() { // TODO Auto-generated method stub return super.fillInStackTrace(); } @Override public Throwable getCause() { // TODO Auto-generated method stub return super.getCause(); } @Override public String getLocalizedMessage() { // TODO Auto-generated method stub return super.getLocalizedMessage(); } @Override public String getMessage() { // TODO Auto-generated method stub return super.getMessage(); } @Override public StackTraceElement[] getStackTrace() { // TODO Auto-generated method stub return super.getStackTrace(); } @Override public synchronized Throwable initCause(Throwable arg0) { // TODO Auto-generated method stub return super.initCause(arg0); } @Override public void printStackTrace() { // TODO Auto-generated method stub super.printStackTrace(); } @Override public void printStackTrace(PrintStream arg0) { // TODO Auto-generated method stub super.printStackTrace(arg0); } @Override public void printStackTrace(PrintWriter arg0) { // TODO Auto-generated method stub super.printStackTrace(arg0); } @Override public void setStackTrace(StackTraceElement[] arg0) { // TODO Auto-generated method stub super.setStackTrace(arg0); } @Override public String toString() { // TODO Auto-generated method stub return super.toString(); } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone(); } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); } @Override public int hashCode() { // TODO Auto-generated method stub return super.hashCode(); }}
JdbcUtils_Tomcat位于utils包
package cn.itcast.utils;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;/*开源连接池的第3种:使用Tomcat服务器创建web应用的连接池 * 1,服务器找servlet,servlet调用service,service调用dao,dao调用JdbcUtils * 2,由于需要Tomcat启动时就为web应用创建连接池 * 所以需要将mysql驱动拷贝到Tomcat\lib目录 * 否则:javax.naming.NamingException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver' * 3,在WebRoot\META-INF\新建context.xml,在该文档中, * 配置Tomcat即将创建的连接池的各个属性 * 4,JdbcUtils获得服务器为应用创建的连接池,使用固定三句代码, * 分别是初始化JNDI, * 找到JNDI, * 在JNDI中找到Tomcat服务器启动时,根据context.xml为web应用专门配置的连接池Datasource, * 并将该连接池赋值给JdbcUtils的成员ds * 完成方法:getConnection和release * 5,删除webapp的时候,记得将服务器\conf\Catalina\localhost\web应用名.xml一并删除! */public class JdbcUtils_Tomcat { //定义成员记住DBCP创建出来的数据源(即连接池) private static DataSource ds; static{ /*以下代码,拷贝于Tomcat文档\8JNDI\4JDBC DataSource * 标准三步曲: * 1,初始化JNDI容器 * 2,根据名称java:comp/env找到JNDI容器 * 3,根据context.xml中绑定的名字jdbc/DataSourceInJND,找到DataSource */ Context initCtx; try { initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); ds = (DataSource)envCtx.lookup("jdbc/DataSourceInJND"); } catch (NamingException e) { throw new ExceptionInInitializerError(e); } } //方法1:获取已装饰的连接 public static Connection getConnection() throws SQLException{ //Tomcat用的其实也是DBCP生成的连接,该连接是已经过装饰后的Connection, //覆写了close方法,即归还到数据源(即连接池) return ds.getConnection(); } //方法2:释放连接 public static void release(Connection conn,Statement st,ResultSet rs){ if (conn!=null) { try { conn.close(); }catch (Exception e) { //只能记录!一旦抛出,后面的2条if代码就无法执行了 e.printStackTrace(); } conn=null; } if (st!=null) { try { st.close(); }catch (Exception e) { //只能记录!一旦抛出,后面的1条if代码就无法执行了 e.printStackTrace(); } st=null; } if (rs!=null) { try { rs.close(); }catch (Exception e) { e.printStackTrace(); } rs=null; } }}
TomcatPool_Servlet位于web.controlle包
package cn.itcast.web.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.dao.Dao;public class TomcatPool_Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*开源连接池的第3种:使用Tomcat服务器创建web应用的连接池 * 1,服务器找servlet,servlet调用service,service调用dao,dao调用JdbcUtils * 2,由于需要Tomcat启动时就为web应用创建连接池 * 所以需要将mysql驱动拷贝到Tomcat\lib目录 * 3,在WebRoot\META-INF\新建context.xml,在该文档中, * 配置Tomcat即将创建的连接池的各个属性 * 4,JdbcUtils获得服务器为应用创建的连接池,使用固定三句代码, * 分别是初始化JNDI, * 找到JNDI, * 在JNDI中找到Tomcat服务器启动时,根据context.xml为web应用专门配置的连接池Datasource, * 并将该连接池赋值给JdbcUtils的成员ds * 完成方法:getConnection和release * 5,删除webapp的时候,记得将服务器\conf\Catalina\localhost\web应用名.xml一并删除! */ Dao dao=new Dao(); dao.add(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
context.xml位于WebRoot\META-INF\目录
部署后,会自动以Web应用名.xml生成在Tomcat\conf\Catalina\localhost\目录下!
如:day16_TomcatPool.xml,所以删除web应用时,要记得将
该目录下的Web应用名.xml一并删除!
<?xml version="1.0" encoding="UTF-8"?><Context> <Resource name="jdbc/DataSourceInJND" auth="Container" type="javax.sql.DataSource" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/day16" initialSize="10" maxActive="30" maxIdle="4"/></Context>
0 0
- 数据库_jdbc_连接池(Tomcat创建)
- 数据库_jdbc_连接池
- 数据库_jdbc_连接池+框架_改造分页案例
- 数据库_JDBC_连接SQL Sever 常见Bug
- 数据库_jdbc_入门
- 数据库_jdbc_分页案例
- 数据库_jdbc_事务1
- 数据库_jdbc_事务2_ThreadLocal
- TOMCAT动态创建连接池
- 数据库_jdbc_改造MVC案例(登录注册)
- tomcat数据池连接数据库
- Tomcat连接池连接MySql数据库
- Hibernate使用Tomcat连接池连接数据库
- 使用Tomcat连接池连接MySql数据库
- 通过jdbc创建连接池连接数据库
- tomcat连接池的创建及使用
- tomcat创建软连接
- tomcat+mysql数据库的连接池配置
- 高校平台--环境理解之Persistence Context
- 为仿真器添加eCos多线程调试支持,GDBServer Extender 0.0.1 使用说明
- 解释器模式
- sql 时间段的提取
- 类的对象定义和使用(含指针对象)
- 数据库_jdbc_连接池(Tomcat创建)
- Opencv学习笔记(六):图像的平滑
- 代码整洁之道
- TCP 协议图解
- 第十七周上机实践项目——谁是小偷
- iOS-单线程的使用
- NGUI官网示例 Example 1 – UIAnchor
- cocos2dx_lua ActionsTest 学习及笔记
- Hibernate学习(一)之load和get的区别