一直发现系统中调用sh脚本重启系统中某些服务后系统会莫名奇妙的报错,由于开发环境在windows下,所以没办法直接跟踪,后来查看tomcat日志发现系统出错是在重启服务成功后记录日志时,google了很久发现该问题是由于sh脚本执行时间比较长,数据库连接已经被连接池回收,导致写数据库时出现了异常:com.mysql.jdbc.communicationsException:Communicatios link failure。网上有资料说proxool连接池解决了这个问题,但我们系统中本来就是用的该连接池,改了一下午配置文件始终未解决该问题;系统再次启动时进入proxool后端统计界面时发现了该连接池的一个属性test-before-use,该属性默认为false的,在配置文件中将该属性配置为true后重新发布工程测试,ok一切正常。以下为proxool的属性及说明:
fatal-sql-exception: 它是一个逗号分割的信息片段.当一个SQL异常发生时,他的异常信息将与这个信息片段进行比较.如果在片段中存在,那么这个异常将被认为是个致命错误(Fatal SQL Exception ).这种情况下,数据库连接将要被放弃.无论发生什么,这个异常将会被重掷以提供给消费者.用户最好自己配置一个不同的异常来抛出.
fatal-sql-exception-wrapper-class:正如上面所说,你最好配置一个不同的异常来重掷.利用这个属性,用户可以包装SQLException,使他变成另外一个异常.这个异常或者继承SQLException或者继承字RuntimeException.proxool自带了2个实现:'org.logicalcobwebs.proxool.FatalSQLException' 和'org.logicalcobwebs.proxool.FatalRuntimeException' .后者更合适.
house-keeping-sleep-time: house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,并判断是否需要销毁或者创建.
house-keeping-test-sql: 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略。
injectable-connection-interface: 允许proxool实现被代理的connection对象的方法.
injectable-statement-interface: 允许proxool实现被代理的Statement 对象方法.
injectable-prepared-statement-interface: 允许proxool实现被代理的PreparedStatement 对象方法.
injectable-callable-statement-interface: 允许proxool实现被代理的CallableStatement 对象方法.
jmx: 略
jmx-agent-id: 略
jndi-name: 数据源的名称
maximum-active-time: 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟.
maximum-connection-count: 最大的数据库连接数.
maximum-connection-lifetime: 一个线程的最大寿命.
minimum-connection-count: 最小的数据库连接数
overload-without-refusal-lifetime: 略
prototype-count: 连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立(假设没有超过最大可用数).例如.我们有3个活动连接2个可用连接,而我们的prototype-count是4,那么数据库连接池将试图建立另外2个连接.这和 minimum-connection-count不同. minimum-connection-count把活动的连接也计算在内.prototype-count 是spare connections 的数量.
recently-started-threshold: 略
simultaneous-build-throttle: 略
statistics: 连接池使用状况统计。 参数“10s,1m,1d”
statistics-log-level: 日志统计跟踪类型。 参数“ERROR”或 “INFO”
test-before-use: 使用前测试该连接是否可用,会产生效率问题。
test-after-use: 用后测试
trace: 如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).你也可以注册一个ConnectionListener (参看ProxoolFacade)得到这些信息.
verbose: 详细信息设置。 参数 bool 值
分享到:
相关推荐
**Proxool 数据源配置详解** Proxool是一款开源的Java数据库连接池,它提供了一种灵活、高效的方式来管理数据库连接。在Java应用程序中,数据源(DataSource)是用于管理和控制数据库连接的关键组件,它能有效地...
例如,通过一个全局变量或配置文件来决定当前使用哪个数据源,然后在需要数据库连接时,根据这个选择来获取对应的Proxool数据源。 在Spring中,可以利用`@ConfigurationProperties`注解加载`aa.xml`和`bb.xml`的...
1. 使用Spring的`DriverManagerDataSource`作为数据源类,这是Spring提供的一个简单的数据源实现,它不支持连接池,但可以用于配置Proxool。 2. 设置`driverClassName`属性为`org.logicalcobwebs.proxool....
3. **配置Hibernate**: 在Hibernate的配置文件(如`hibernate.cfg.xml`)中,将数据源设置为刚刚创建的Proxool数据源bean。比如: ```xml ... ... <property name="connection.datasource">java:comp/env/...
2. **配置Proxool属性**:在Spring的配置文件(如`applicationContext.xml`)中,我们需要定义一个`org.springframework.jndi.JndiObjectFactoryBean`,该工厂bean会创建一个Proxool的数据源。以下是一个基本的配置...
接下来,我们需要在Spring的配置文件(如`applicationContext.xml`)中引入Proxool的数据源。通常,我们使用`<bean>`标签来定义数据源,并使用`<property>`标签来注入配置属性。例如: ```xml ${proxool.driver}...
在`beans.xml`中,修改数据源配置如下: ```xml <!-- Proxool配置属性 --> <value>classpath:ProxoolConf.xml ``` 这里,我们使用了`ProxyDataSource`,它是Spring对Proxool的封装...
在其他环境中,也可以通过编程方式创建和配置Proxool的数据源。 7. **连接池性能优化**:根据实际应用负载调整连接池参数,如预热连接数、连接生命周期、空闲连接检查频率等,以达到最佳性能和资源利用率。 在使用...
### Spring 下 MyBatis 多数据源配置详解 在企业级应用开发中,经常会遇到需要同时操作多个数据库的情况。为了实现这一目标,开发者通常会采用多数据源配置的方法。本篇文章将详细介绍如何在Spring框架中配置...
在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...
Spring 的 Annotation-Driven 配置事务管理器详解(多数据源配置) Spring 框架提供了强大的事务管理机制,通过使用 Annotation-Driven 配置,可以方便地管理事务。在多数据源配置中,spring 的 Annotation-Driven...
以下是一个包含两个不同数据库的数据源配置示例: ```xml <proxool-config> <proxool> <alias>datasource1 <driver-url>jdbc:mysql://localhost:3306/datasource1 <driver-class>...
Druid、DBCP、C3P0、JBoss、Weblogic、Proxool 文档中包括 以上各个数据源配置参数中文含义,并不包括配置实例,请注意。
本文将详细介绍几种常用的数据源解决方案及其配置方法,包括JNDI方式创建`DataSource`、Apache提供的简单连接池创建数据源、C3P0方式创建数据源、Proxool方式创建数据源以及BoneCP方式创建数据源。 #### JNDI 方式...
在Spring框架中,你可以通过声明式配置来设置Proxool数据源。在XML配置文件中,创建一个`org.logicalcobwebs.proxool.ProxoolDataSource`类型的bean,然后设置相应的属性,如`driver-url`、`username`、`password`...
4. **透明集成**:对应用来说,使用Proxool就像使用普通的JDBC连接一样,无需修改代码,只需更改数据源配置。 5. **连接池健康检查**:Proxool 支持定期进行连接健康检查,确保返回给应用的都是有效的数据库连接。 ...
2. 配置Hibernate:在Hibernate的主配置文件(通常是hibernate.cfg.xml)中,需要定义数据源,指定使用Proxool连接池。例如: ```xml ... <property name="hibernate.connection.provider_class">org....