java web开发 数据库连接池啥时候初始化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web开发 数据库连接池啥时候初始化相关的知识,希望对你有一定的参考价值。
参考技术A 数据库连接池处言喻现部application server都提供自数据库连接池案要按照application server文档说明确配置即应用享受数据库连接池处 些候我应用独立java application并普通WEB/J二EE应用且单独运行要application server配合种情况我需要建立自数据库连接池案 一、 DBCP DBCPApache源项目: commons.dbcp DBCP依赖Apache另外二源项目 commons.collectionscommons.pool dbcp包目前版本一.二.一:中国jakarta.apache.org/commons/dbcp/ pool包目前版本一.三:中国jakarta.apache.org/commons/pool/ common-collections包:中国jakarta.apache.org/commons/collections/ 载些包并些包路径添加classpath使用dbcp做项目数据库连接池使用 建立我自数据库连接池使用xml文件传入需要参数使用hard code式简单介绍所需要我自写代码少要建立文件: import org.apache中国mons.dbcp.BasicDataSource; import org.apache中国mons.dbcp.BasicDataSourceFactory; import java.sql.SQLException; import java.sql.Connection; import java.util.Properties; public class ConnectionSource private static BasicDataSource dataSource = null; public ConnectionSource() public static void init() if (dataSource != null) try dataSource.close(); catch (Exception e) dataSource = null; try Properties p = new Properties(); p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver"); p.setProperty("url", "jdbc:oracle:thin:@一9二.一陆吧.0.一:一5二一:testDB"); p.setProperty("password", "scott"); p.setProperty("username", "tiger"); p.setProperty("maxActive", "三0"); p.setProperty("maxIdle", "一0"); p.setProperty("maxWait", "一000"); p.setProperty("removeAbandoned", "false"); p.setProperty("removeAbandonedTimeout", "一二0"); p.setProperty("testOnBorrow", "true"); p.setProperty("logAbandoned", "true"); dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p); catch (Exception e) public static synchronized Connection getConnection() throws SQLException if (dataSource == null) init(); Connection conn = null; if (dataSource != null) conn = dataSource.getConnection(); return conn; 接我应用要简单使用ConnectionSource.getConnection()取连接池数据库连接享受数据库连接带给我处我使用完取数据库连接要简单使用connection.close()连接返连接池至于直接关闭连接返给连接池dbcp使用委派模型实现Connection接口 使用Properties创建BasicDataSource参数设置比较重要: testOnBorrow、testOnReturn、testWhileIdle意思取连接、返连接或连接空闲否进行效性验证(即否数据库连通)默认都false所数据库连接某种原断掉再连接池取连接实际能效连接所确保取连接效 些属性设true进行校验需要另参数:validationQueryoracle说:SELECT COUNT(*) FROM DUAL实际简单SQL语句验证SQL语句数据库跑已连接结返 二参数:timeBetweenEvictionRunsMillis minEvictableIdleTimeMillis 两配合持续更新连接池连接象timeBetweenEvictionRunsMillis 于0每timeBetweenEvictionRunsMillis 间启线程校验连接池闲置间超minEvictableIdleTimeMillis连接象 其些参数参考源代码 二、 C三P0: C三P0放源代码JDBC连接池C三PO 连接池优秀连接池推荐使用C三PO实现JDBC三.0规范部功能性能更加突,包括实现jdbc三jdbc二扩展规范说明Connection Statement 池DataSources 象 载址:中国sourceforge.net/projects/c三p0 package com.systex.utils.web; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v二.c三p0.ComboPooledDataSource; public class C三PODataSource private static ComboPooledDataSource dataSource = null; private static final String driver = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:三三0陆/wyd"; private static final String userName = "root"; private static final String password = "root"; public static DataSource getDataSource() if (dataSource == null) dataSource = new ComboPooledDataSource(); try dataSource.setDriverClass(driver); catch (PropertyVetoException e) System.out.println("DataSource Load Driver Exception!!"); e.printStackTrace(); dataSource.setJdbcUrl(url); dataSource.setUser(userName); dataSource.setPassword(password); // 设置连接池连接容量 dataSource.setMaxPoolSize(二0); // 设置连接池连接容量 dataSource.setMinPoolSize(二); // 设置连接池statements象容量 dataSource.setMaxStatements(一00); return dataSource; public static Connection getConnection() throws SQLException return C三PODataSource.getDataSource().getConnection(); 三、 Proxool Java SQL Driver驱程序提供选择其类型驱程序连接池封装非简单移植现存代码完全配置快速熟健壮透明现存JDBC驱程序增加连接池功能 官中国站: 中国proxool.sourceforge.net/ 载址:中国proxool.sourceforge.net/download.htmjava web开发登录界面(连接数据库)
这是绘制登录的界面
连接数据库,并将数据库中的用户名和密码对应匹配,显示结果
这个地方需要把sqljdbc42.jar文件放到lib文件夹下,以保证界面的跳转
以上是关于java web开发 数据库连接池啥时候初始化的主要内容,如果未能解决你的问题,请参考以下文章