Tomcat配置连接池
来源:互联网 发布:郭德纲 人品 知乎 编辑:程序博客网 时间:2024/06/05 22:42
在我们做项目的时候连接数据库一般采用两种方式
1:应用程序直接获取数据库连接
2:通过数据库连接池获取连接
第一种方法是用户每次请求都需要向数据库获得连接,这样有一个很大的缺点,就是数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。如果网站一天的访问量大的话,就会极大浪费数据库资源,并且极易造成数据库服务器内存溢出、宕机。直接从数据库获取连接的示意图:
然而采用数据库连接池就可以很好的解决这个问题,采用数据库连接池获取数据连接的过程如下:
下面介绍如何在tomcat容器中配置数据源
1.找到tomcat所在目录中的conf文件夹中的context.xml文件,在其中做修改(在Context结点里面添加):
<!—mysql数据源配置--> <Resource name="ds_mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdel="30" maxWait="10000" username="root" password="5982285" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/myblog" /> <!—oracle数据源配置--> <Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdel="30" maxWait="10000" username="scott" password="tiger" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:sky" />
注:上面为mysql和Oracle配置了数据源,看个人需求而定,二者选其一。
属性说明:
name:数据源名称,这个随便,通常取为jdbc/XXX的格式
auth:Container容器
type:javax.sql.DataSource 注意是javax不是java
username:数据库用户名
password:数据库用户密码
maxIdle:最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
maxActive:连接池的最大数据库连接数。设为0表示无限制。
maxWait:最大建立连接等待时间。设为-1表示无限制。
driverClassName:数据库完整的驱动类全称。
url:数据库链接
注:网上很多人都说需要在web.xml文件中再次配置,其实不配置也是可以的(本人就没有在web.xml配置,依然跑的很溜),另外有一个要特别注意的是要将数据源的jar包和数据库的驱动包放到tomcat的lib包中。
JNDI技术简介
JNDI(Java Naming and Directory Interface)即Java命名和目录接口,它对应于Java EE中的javax.naming包,这套API的主要作用:它可以把DataSource对象放在一个Tomcat容器中(JNDI容器),并为容器中的DataSource对象取一个名称,以后程序想获得DataSource对象,只需要通过名称检索即可。
JNDI的核心API为Context,它代表JNDI容器,核心方法是lookup()它的功能是检索容器中对应名称的对象。
连接池工具类:
/** * 获取数据库连接的工厂 * @author Liao */public class ConnectionFactory {private static DataSource dataSource;static {try {//初始化查找命名空间Context context = new InitialContext();//找到DataSourcedataSource = (DataSource) context.lookup("java:comp/env/ds_mysql");} catch (Exception e) {e.printStackTrace();}}/** * 获取数据库连接 */public static Connection getConnection(){try {//通过数据源获取连接然后返回return dataSource.getConnection();} catch (Exception e) {e.printStackTrace();return null;}}/** * 关闭资源 * @param conn * @param sta * @param res */public static void closeConnection(Statement sta, ResultSet res) {try {if (res != null) {res.close();res = null;}if (sta != null) {sta.close();sta = null;}} catch (SQLException e) {e.printStackTrace();}}}注:这里的close并不是真正的关闭,连接又回到了连接池,处于空闲状态。
连接池配置常见错误:
Invalid byte 1 of 1-byte UTF-8 sequence.
原因:
在context.xml文件中使用了中文的注释(这个确实比较坑爹,但确实是这样的)。
解决方案:
把中文的注释去掉即可。
- tomcat连接池配置
- Tomcat连接池配置
- 配置tomcat连接池
- tomcat连接池配置
- Tomcat连接池配置
- tomcat连接池配置
- Tomcat连接池配置
- Tomcat 连接池配置
- tomcat连接池配置
- tomcat 连接池配置
- Tomcat连接池配置
- 配置tomcat连接池
- Tomcat 连接池配置
- Tomcat 连接池配置
- tomcat连接池配置
- Tomcat连接池配置
- Tomcat连接池配置
- Tomcat连接池配置
- Android 编程遇到的一点记录
- POJ 1915 Knight Moves 骑士遍历问题(跳马问题)
- TCP/IP学习(27)——协议初始化与简要的接收/发送流程
- ListView嵌套Gallery时click事件被Gallery捕获
- ZOJ-3414-Trail Walk_计算几何
- Tomcat配置连接池
- POJ 3264 Balanced Lineup
- iPhone开发 屏幕适配(3.5英寸和4英寸屏幕适配)
- jquery tmpl 模版
- C++栈
- 用批处理删除txt中指定的行和替换指定的行,以及添加指定的行
- 获取本地IP
- 证书与成绩单
- java--jsp图片验证码