Tomcat监听shutdown释放数据库连接池
开发时因为更新代码,频繁重启Tomcat,遇到一个问题:在执行shutdown脚本后,Tomcat进程没有关闭依然存在(但是HTTP服务已经停止),需要手动执行kill命令才行。查了一些资料结合经验,应该是所使用的数据库连接池中的连接没有被释放的问题引起的。所以解决的办法,就是想办法做一个Tomcat的shutdown的事件监听,然后手动释放数据库连接即可。
Tomcat的shutdown的事件监听
很简单,实现一个ServletContextListener的实例,并注册到web.xml中即可。
public class ShutdownListener implements ServletContextListener {
|
<listener> |
数据库连接池的关闭和释放
代码中没有使用复杂的数据库连接池,是用org.apache.commons.pool.impl.GenericObjectPool和org.apache.commons.pool.BasePoolableObjectFactory组合实现的。
在ServletContextListener的contextDestroyed方法中
- 执行GenericObjectPool.clear(),是将池内缓存的对象全部销毁
- 执行GenericObjectPool.close(),关闭对象池,不再支持borrowObject(),但依然支持returnObject()方法且return后将对象立即销毁
做完这两步,执行Tomcat的shutdown脚本后,Tomcat进程过几秒就会自动关闭了。
看看 Tomcat , 数据库 , 进程
- 2016-06-06 -- Tomcat启用https服务
- 2015-08-28 -- Linux下搭建Tomcat环境
- 2015-01-07 -- 防止数据库数据重复的几种方法
- 2013-05-20 -- Tomcat的Connector:Coyote
- 2013-05-19 -- Tomcat6源码学习
看看 Java
- 2016-09-09 -- 64位Linux下Java进程堆外内存迷之64M问题
- 2016-08-18 -- 读java concurrency in practice
- 2016-08-05 -- 线程清理
- 2016-06-21 -- FutureTask简单分析和用法
- 2016-06-21 -- Semaphore简单分析
Tomcat监听shutdown释放数据库连接池的更多相关文章
- Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口
1.Tomcat介绍 2.安装jdk下载:wget -c http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8 ...
- 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志
配置Tomcat监听80端口 • vim /usr/local/tomcat/conf/server.xml Connector port=" protocol="HTTP/1.1 ...
- 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...
- Linux centosVMware 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
一.配置Tomcat监听80端口 关闭tomcat报错 [root@davery src]# /usr/local/tomcat/bin/shutdown.sh 重装tomcat即可 vim /usr ...
- Tomcat监听443端口的方法
当我们需要更安全的访问网站的时候就会选择使用https协议,而https协议默认的端口号为443端口,这就是我们为什么向让Tomcat监听在443端口的原因,因为监控在非80端口和443端口的web服 ...
- Tomcat配置多线程和配置数据库连接池
Tomcat配置多线程和配置数据库连接池 1. tomcat配置线程池: [root@RD2_AS yanghuihui]# cd /usr/tomcat/conf/ [root@RD2_AS co ...
- tomcat监听activemq jms配置
当从webservice接收到信息的时候,消息生产者producer立刻把收到的消息放入到jms里面,消费者cusomer这时要设置一个监听,当生产者发送消息时,只要消息被发出来,消费者就会接收到消息 ...
- ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题
生产库监听日志文件太大(达到4G多),发现oracle停止写监听日志,检查参数log_file,log_directory,log_status 均正常,数据库运行也正常. 经确认确实为监听日志过大引 ...
- CentOS配置Tomcat监听80端口,虚拟主机
2019独角兽企业重金招聘Python工程师标准>>> Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [ro ...
随机推荐
- (2) openstack--keystone
yun1 OpenStack packages yum install python-openstackclient -y yum install openstack-selinux SQL data ...
- Dotnet站点多个路由对应同一个Action的总结
需求:有些浏览器会屏蔽带有Ad字样的路径,此时需要创建多个路由指向同一个Action. 例如:原来 : http://lalalalalala.org:1506/api/advert/common ...
- tinylogin-1.4
tinylogin-1.4是一个开发嵌入式的文件系统很好的一个工具
- sbt 配置个屁的国内源
~/.sbt/repositories [repositories] #本地源 local #兼容 Ivy 路径布局 apache-ivy: https://repo1.maven.apache.or ...
- CSS display详解
1.解释一下display的几个常用的属性值,inline , block, inline-block inline(行内元素): 使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行 ...
- AcWing P164 可达性统计 题解
Analysis 这道题我一开始想到的是传递闭包,但是时间复杂度是n³,也开不下30000*30000的数组,所以我想到了拓扑+状态压缩(bitset),从后往前找,把能到达的点能到哪里用位运算赋到上 ...
- margin与padding的区别
当子元素使用padding-top,不会影响到父元素的高度 使用margin-top,则会影响
- 如何自定义 GNOME 3 桌面?
作者: Magesh Maruthamuthu 译者: LCTT 郑 | 2019-08-22 00:02 评论: 2 收藏: 1 我们收到很多来自用户的电子邮件,要我们写一篇关于 GNOME 3 ...
- 1825:【01NOIP提高组】数的划分
#include<bits/stdc++.h> using namespace std; ],tot; void dfs(int num,int pos) { if(pos==k) ]) ...
- python 根据时间戳获取秒🐱
print("当前时间: ",time.strftime('%Y.%m.%d %H:%M:%S ',time.localtime(time.time()))) import tim ...