Proxool数据库连接池整合问题
近期在整合struts2、spring、hibernate,使用proxool配置数据库连接池总是报错,查找了下原因如下:
当Struts与Spring整合时,spring必须以listener加载,而proxool是使用Servlet加载的。
这样就导致spring早于proxool加载,spring在创建datasource时proxool连接池还没加载,从而报错。在网上有牛人用如下方法解决
解决方案一:自己写监听器早于Spring加载proxool
<context-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/classes/proxool-conf.xml</param-value>
</context-param>
<listener>
<listener-class>sgwmis.web.listener.ProxoolListener</listener-class>
</listener>
public class ProxoolListener implements ServletContextListener {
private static final NetLogger log = NetLogger.getLogger(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";
private boolean autoShutdown = true;
@Override
public void contextDestroyed(ServletContextEvent contextEvent) {
if (autoShutdown) {
ProxoolFacade.shutdown(0);
}
}
@Override
public void contextInitialized(ServletContextEvent contextEvent) {
ServletContext context = contextEvent.getServletContext(); // 对应servlet的init方法中ServletConfig.getServletContext()
String appDir = contextEvent.getServletContext().getRealPath("/");
Properties properties = new Properties();
Enumeration<String> 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
properties.setProperty(name, value);
}
}
if (properties.size() > 0) {
try {
PropertyConfigurator.configure(properties);
} catch (ProxoolException e) {
log.error("Problem configuring using init properties", e);
}
}
}
}
方法二:就是有spring完全管理proxool,这个网络上有很多,大家可以参考下
相关推荐
Proxool是一个开源的、轻量级的Java数据库连接池实现,它提供了一种高效、灵活的方式来管理数据库连接。在某些场景下,为了保护敏感信息,如数据库的用户名和密码,我们需要对这些数据进行加密处理。"proxool连接池...
Proxool是SSH框架中常用的数据库连接池之一,以其轻量级、灵活配置和优秀的性能表现而受到青睐。 数据库连接池的基本原理是预先在内存中创建一定数量的数据库连接,应用程序在需要时可以从池中获取连接,使用完毕后...
标题提到的“数据库连接池以及hibernate对各种连接池的整合”是指在Java应用中,特别是使用Hibernate作为持久层框架时,如何集成和配置不同的数据库连接池技术。以下是一些主要的开源数据库连接池及其特点: 1. **...
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...
Proxool是一款轻量级的数据库连接池,它提供了线程安全的连接管理,能有效控制数据库连接的数量,避免过多的连接占用系统资源。Proxool还具有监控功能,可以实时查看连接池的状态,便于问题排查和优化。 3. 整合...
标题中的"spring+dwr+proxool连接池"指的是一个整合了Spring框架、Direct Web Remoting (DWR)和Proxool数据库连接池技术的应用程序。这个应用可能用于创建一个能够实时交互的Web应用程序,其中Spring提供了依赖注入...
为了提高效率和避免资源浪费,开发者通常会采用数据库连接池技术,`Proxool`就是其中一种优秀的开源解决方案。 **Proxool简介** `Proxool`是由`Apache Software Foundation`维护的轻量级数据库连接池,它提供了一...
在IT行业中,数据库连接池是优化数据库访问性能的重要技术之一,而`Proxool`是其中的一款开源连接池实现。`Proxool`是Java语言编写,它为应用程序提供了高效、可配置、线程安全的数据库连接池服务。在本资料中,我们...
而Proxool是Apache的一个开源项目,它是一个轻量级的数据库连接池,能够有效地管理和优化数据库连接,提高应用的性能和可伸缩性。当我们需要在Spring框架中集成Proxool作为数据连接池时,需要进行一系列的配置工作。...
本文将深入探讨如何将`Proxool`数据库连接池与`Mybatis`持久层框架进行整合,无需依赖`Spring`框架。我们将讨论配置过程、核心概念以及整合的步骤。 首先,让我们了解`Proxool`。Proxool是基于Apache 2.0协议的一个...
Proxool是一个基于池化的JDBC代理,它维护着一个数据库连接池,当应用需要访问数据库时,可以从池中获取连接,用完后再归还,而不是每次请求都创建新的连接,从而提高系统性能,减少数据库的压力。 **配置步骤** 1...
1、proxool官网,下载最新的proxool-...3、创建自定义数据库连接池监听 4、整合Struts2、Spring和proxool,配置Web服务启动配置文件[web.xml] 5、整合Spring和proxool,配置应用上下文配置文件[applicationContext.xml]
Proxool,全称为Proxy Connection Pool,是一个灵活、轻量级的数据库连接池。它的优点在于可以动态监控连接池状态,如活动连接数、等待连接数等,并且可以根据实际需求动态调整池的大小。Proxool通过代理的方式管理...
框架整合Spring MVC3.23+Spring3.23+Hibernate4.2.3+Activiti5.16.3,三层架构dao,service,controller,使用proxool连接池(已配置好监听器),默认链接mysql数据库。可根据项目开发需要,做适当修改,各项配置齐全...
总之,这个项目展示了如何在Java Web开发中集成SSH框架和Proxool数据库连接池,提供了一种高效的架构解决方案。通过Spring管理数据源和事务,Hibernate处理数据持久化,Struts2处理用户交互,而Proxool则优化了...
在Spring框架中,整合数据库连接是开发Web应用的常见任务,它提供了多种方式来管理数据库连接池,确保高效、稳定的数据交互。以下是Spring整合数据库连接的三种主要方式:DBCP、C3P0和Proxool,以及它们各自的特点和...