jboss mysql 重连_04 我要做数据库自动重连

普元产品开发的企业级应用,一般都会使用数据库。在运行环境中,会通过数据源连接池访问数据库。由于存在各种原因,如网络不稳定或暂时中断,会造成数据库连接池中的连接失效,因此,数据库连接池一般需要有数据库重连功能,在数据库连接中断后重新连接数据库。

对于Tomcat、PAS服务器,普元提供了C3P0数据源,默认具有数据库重连功能的。其他应用服务器由于使用的是JNDI数据源,就是使用应用服务器的数据源来实现数据库自动重连。

下面分别描述普元产品支持的其他几种应用服务器的数据源的自动重连设置。

1、Tomca连接池的自动重连

在EOS Governor控制台的配置->数据源中,选中某数据源,点击修改,将"连接重试次数"默认值-1修改为1,点击"确定"保存。重启Server。    或者直接修改目录D:\primetonfor3207_platform\eosserver\working\eos-default\config下user-config.xml文件中DataSource的配置:    -1修改为    1

2、JBoss连接池的自动重连

JBoss连接池默认没有设置成自动重连,要设置,需要修改数据源配置文件。

/default/deploy/DefaultDataSource-ds.xml (这是普元产品默认安装的一个数据源配置文件)。

对这个文件要做如下修改:

1)增加失效连接检查类配置,如下:

org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter

这个类用来检查连接池中的失效连接,就是连接池中已经和数据库中断的,无效的连接,检查出后,将失效连接移除出连接池,防止用户获取到无效连接。这样,一旦断网了无效的连接会都移出连接池,如果网络恢复,用户就不会获取到无效连接,连接池会重新获取新的数据库连接。

上面的例子针对的是使用的Oracle数据库的,如果针对其他数据库,需要用到的类如下:

数据库类型类名

Oracleorg.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter

DB2org.jboss.resource.adapter.jdbc.vendor. DB2ExceptionSorter

SQL Server不需要配置,默认支持

Sybaseorg.jboss.resource.adapter.jdbc.vendor. SybaseExceptionSorter

Informixorg.jboss.resource.adapter.jdbc.vendor. InformixExceptionSorter

MySQLorg.jboss.resource.adapter.jdbc.vendor. MySQLExceptionSorter

2)增加测试连接用的SQL语句,如下:

select 1 from tableXX

这个是测试连接有效性的测试SQL语句,这是一个可选项,建议写上,不填会执行"select 1"语句,这个如果发生错误,则会执行上面配置的SQL语句,因此建议加上这个配置项。

3)增加新建连接的SQL语句,如下:

some arbitrary sql

这个SQL语句在新建数据库连接时会调用,来测试数据库连接是否有效,如果有效,用户就可以拿到可用的数据库连接。如果数据库断网后,前面两项配置讲无效连接都移出连接池,恢复网络后,用户请求数据库连接,就会调用新建一个数据库连接,这个语句就是提供新建数据库连接后测试用的。

4)设置从数据库获取连接的SQL,如下:

some arbitrary sql

这个SQL在用户从连接池拿到连接时调用,检查连接的有效性。

5)设置获取连接的检查类,配合第四步配置,如下:

org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker

这个类用来验证数据库连接的有效性,不同数据库的验证类如下:

数据库类型类名

Oracleorg.jboss.resource.adapter.jdbc.vendor. OracleValidConnectionChecker

SQL Serverorg.jboss.resource.adapter.jdbc.vendor.MSSQLValidConnectionChecker

Sybase不需配置

Informix不需配置

MySQLorg.jboss.resource.adapter.jdbc.vendor. MySQLValidConnectionChecker

下面是MySQL和SQL Server的自动重连配置(Jboss/server/default/deploy/DefaultDataSource-ds.xml),重点关注红色字体部分:

1)MySQL的自动重连数据源配置:

... DefaultDataSourcejdbc:mysql://192.168.6.75:3306/hjwcom.mysql.jdbc.Driverrootroot5100 org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter select 1 org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker select 1 ...

2)SQL Server的自动重连数据源配置:

... DefaultDataSourcejdbc:sqlserver://192.168.1.21:1433;DatabaseName=myDBcom.microsoft.sqlserver.jdbc.SQLServerDriveruser1pass15100select 1 org.jboss.resource.adapter.jdbc.vendor.MSSQLValidConnectionChecker select 1 ...

注:SQL Server没有sorter class类,所以不用配置,MySQL、Oracle等就有,需要配置。Sybase和Informix没有checker class,所以也不用配置checker class。

3、WebLogic的数据源自动重连

登陆WebLogic的console控制台应用,选择"services-JDBC--data sources"菜单,修改DefaultDataSource数据源(普元产品默认的数据源名称),选择 "Connection Pool"tab页面,如下:

978cde4456fcf0c8e3c79ee924eb1011.png

修改下面的内容,见红圈标注地方:

13efc1f4cba2bd211c67e64aae6b8c1e.png

注意:要能自动重连,必须勾选"Test Connection On Reserve"选项,即保留时测试连接,连接在连接池的时候会每个120秒(如上面第二项配置)测试一下未使用的连接,如果测试不通过,会将失效的连接移出连接池,以避免用户获取到中断或无效的连接。

Test Table Name必须要填写,否则即便勾选了选项也没有用,因为这个设置了测试用的SQL语句,如果这个没有填写,则WebLogic不知道用什么测试连接,也无法检查连接的有效性。这个字段的语法有两个:SQL :如"SQL select 1", 表示会使用"select 1"作为测试SQL语句。

:如"dual",表示会使用"select count * from dual"。

注意:语法不要搞错了,这个很重要,否则WebLogic会拼出错误的语句,造成测试SQL异常,如填写"select 1 from dual",原本为执行"select 1 from dual"作为sql语句,但被WebLogic解释成表名,会拼成"select count(*) from select 1 from dual"这样的错误SQL语句,WebLogic不会正确执行这个语句,造成自动重连失败。正确的写法是"SQL select 1 from dual",前面加上SQL就可以了,或写成"dual"。

4、WebSphere的数据库连接池自动重连

用http://ip:9060/ibm/console登陆WebSphere的控制台应用(9060为默认的管理控制台端口),在 "资源-JDBC-数据源"功能修改数据源(默认名称为DefaultDataSource),点击"WebSphere Application Server数据源属性"如下:

50b0aa31d87e39f75b737a64dedcdac2.png

进入WebSphere特定的数据源属性配置页面,如下图,勾选"预测试现有合用的连接"和"预测试新连接",并填写重试时间间隔、重试次数,以及测试用的SQL字符串。有了这些选项,客户端拿到连接,或连接池新建连接时,会使用设置的SQL语句测试连接的有效性,将有效的连接给客户端,不会将无效的连接给客户端,这样保证了数据库连接池中的连接中断,网络又连上时,用户可以拿到有效的数据库连接。当然,如果网络不恢复,用户是永远无法拿到可用的数据库连接的。

a9c0994ab837935aed6d9d220c4d0114.png

注:如果是WebSphere 8.5的话,勾选"验证新连接"及"验证现有共用的连接",如下图:

e783d2772204cea6acb1cf66145a203f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值