ProxoolListener

简介: package cn.com.css.common.listener; import java.io.File; import java.util.Enumeration; import java.util.Properties; import javax.servlet.ServletContext; import javax.servlet.ServletContextEve

package cn.com.css.common.listener;

import java.io.File;
import java.util.Enumeration;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;


public class ProxoolListener implements ServletContextListener  
{  
    private static final Log LOG = LogFactory.getLog(ProxoolListener.class);  
      
    private static final String XML_FILE_PROPERTY = "xmlFile";  
 
    private static final String PROPERTY_FILE_PROPERTY = "propertyFile";  
 
    private static final String AUTO_SHUTDOWN_PROPERTY = "autoShutdown";  
      
    @SuppressWarnings("unused")  
    private boolean autoShutdown = true;  
      
    public void contextDestroyed(ServletContextEvent arg0)  
    {  
        System.out.println("destroy database pool....");  
    }  
 
    @SuppressWarnings("unchecked")
 public void contextInitialized(ServletContextEvent contextEvent)  
    {  
        ServletContext context = contextEvent.getServletContext(); //对应servlet的init方法中ServletConfig.getServletContext()  
        String appDir = contextEvent.getServletContext().getRealPath("/");  
        Properties properties = new Properties();  
 
        Enumeration names = context.getInitParameterNames();  
        while (names.hasMoreElements()) {  
            String name = (String) names.nextElement();  
            String value = context.getInitParameter(name);  
 
            if (name.equals(XML_FILE_PROPERTY)) {  
                try {  
                    File file = new File(value);  
                    if (file.isAbsolute()) {  
                        JAXPConfigurator.configure(value, false);  
                    } else {  
                        JAXPConfigurator.configure(appDir + File.separator + value, false);  
                    }  
                } catch (ProxoolException e) {  
                    LOG.error("Problem configuring " + value, e);  
                }  
            } else if (name.equals(PROPERTY_FILE_PROPERTY)) {  
                try {  
                    File file = new File(value);  
                    if (file.isAbsolute()) {  
                        PropertyConfigurator.configure(value);  
                    } else {  
                        PropertyConfigurator.configure(appDir + File.separator + value);  
                    }  
                } catch (ProxoolException e) {  
                    LOG.error("Problem configuring " + value, e);  
                }  
            } else if (name.equals(AUTO_SHUTDOWN_PROPERTY)) {  
                autoShutdown = Boolean.valueOf(value).booleanValue();  
            } else if (name.startsWith("jdbc")) { //此处以前是PropertyConfigurator.PREFIX改为jdbc,因为此源码是0.9.1版本的,与0.9RC3版本有点不一样  
                properties.setProperty(name, value);  
            }  
        }  
 
        if (properties.size() > 0) {  
            try {  
                PropertyConfigurator.configure(properties);  
            } catch (ProxoolException e) {  
                LOG.error("Problem configuring using init properties", e);  
            }  
        }  
    }  
 

目录
相关文章
|
Web App开发 安全 大数据
大数据问题排查系列-开启 kerberos 后无法访问 HIVESERVER2 等服务的 WEBUI
大数据问题排查系列-开启 kerberos 后无法访问 HIVESERVER2 等服务的 WEBUI
|
供应链 安全 机器人
Python - 接入钉钉机器人
Python - 接入钉钉机器人
2348 0
Python - 接入钉钉机器人
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
1607 0
textarea去掉边框和取消选中后的边框
textarea去掉边框和取消选中后的边框
313 0
|
Web App开发 网络协议 搜索推荐
完美修复google翻译失效的问题
使用chrome的小伙伴应该都知道有个页面一键翻译,对于英语相当蹩脚的我来说灰常好用,然而…
436 0
|
弹性计算 关系型数据库 MySQL
飞天加速计划·高校学生在家实践分享
本文从一个新手的角度介绍了飞天加速计划·高校学生在家实践带来的收获
255 1
飞天加速计划·高校学生在家实践分享
|
设计模式 缓存
装饰模式和代理模式的区别
装饰模式和代理模式的区别
|
JavaScript 前端开发
浏览器中BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法(上)
在学过JavaScript之后,我们都知道对象分为内置对象 、宿主对象 、自定义对象,我们经常用到的浏览器中的内置对象就是宿主对象的一种,浏览器的内置对象有很多,本文就来详细讲解一下Window对象的属性与方法吧。
205 0
浏览器中BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法(上)
|
缓存 算法 安全
原来,我一直都不会用Windows
文件复制、粘贴、剪切,应该是使用电脑过程中使用最为频繁的操作之一。
原来,我一直都不会用Windows