起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 304|回复: 18

[分享]JBoss关于数据库连接池连接意外中断的自动重连问题

[复制链接]
发表于 2007-9-4 16:09:18 | 显示全部楼层 |阅读模式
http://www.matrix.org.cn/thread. ... 7e51&forumId=24
==================
因网络中断导致数据库连接池报错   

org.jboss.resource.connectionmanager.JBossLocalXAException: Error trying to start local tx: ;
- nested throwable: (org.jboss.resource.JBossResourceException: SQLException;
- nested throwable: (com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

即使网络或故障恢复   连接池却不能自动恢复连接   只能重起程序来解决
回复

使用道具 举报

 楼主| 发表于 2007-9-4 16:09:56 | 显示全部楼层

方法一

可以在<local-tx-datasource></local-tx-datasource> 里面加入一行语句:
<check-valid-connection-sql>select 1</check-valid-connection-sql>
注意:select 1用途:在每次获取连接时先使用这条简单的SQL语句,判断连接是否可用,如果不可用的话,JBoss会自动重新建立数据库连接的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-4 16:10:34 | 显示全部楼层

方法二:性能更好的方案

jboss的连接池支持根据SQLException的类型来确定是应用的异常还是不可恢复的数据库连接的异常,因此可以在
datasource的配置里加上
[B]MySQL[/B]
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
[B]Informix[/B]
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.InformixExceptionSorter</exception-sorter-class-name>
[B]Oracle[/B]
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
[B]Sybase[/B]
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter</exception-sorter-class-name>

这样就不需要每次获取连接的时候都执行一次查询了,性能提高了很多,只有当发生SQLException并且他侦测到这个异常导致连接无法使用时才会丢弃这个连接
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-4 16:26:38 | 显示全部楼层

方法三:

另外,你可以添加:
[B]MySQL[/B]
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
[B]Oracle[/B]
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 15:16:08 | 显示全部楼层
对于Jboss 4.2.2.GA 版本,方法三增加了对MS SQL数据库的支持
[B]MS SQL[/B]
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MSSQLValidConnectionChecker</valid-connection-checker-class-name>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-4 14:20:15 | 显示全部楼层
方法一
  用SQL Server和Oracle 都验证过,ok

方法二
  用Oracle验证过,ok

方法三
  没有验证
回复 支持 反对

使用道具 举报

发表于 2008-11-28 09:31:12 | 显示全部楼层

我的配置,和更改明细

我的配置,和更改明细,其实其他数据库也存在这个问题,只不过,其他数据库断开,只是影响某一些功能,而系统库断开,整个系统都会出问题。

新建文件夹.rar

4.49 KB, 下载次数: 58

回复 支持 反对

使用道具 举报

发表于 2008-11-28 09:32:38 | 显示全部楼层
希望,起步,能重视我们的问题,尽快回复,因为这实在是一件很严重的事情。
回复 支持 反对

使用道具 举报

发表于 2008-11-28 09:48:18 | 显示全部楼层
从楼主给的那个jboss的数据源看应该不是我们的系统数据源,并且里面的驱动类和用户名密码与config.justep.xml文件中的不一样,到deploy目录把所有的数据源配置文件(系统和业务库)发上来看看。
我们这边也在找个环境测试一下。
回复 支持 反对

使用道具 举报

发表于 2008-11-28 10:45:10 | 显示全部楼层
<?xml version="1.0" encoding="UTF-8"?>
<!-- DataSource Definition -->
<!-- Automaticaly generated by AutoDeploy -->
<datasources>
        <local-tx-datasource>
           <check-valid-connection-sql>select 1</check-valid-connection-sql>
                <jndi-name>x3</jndi-name>
                <connection-url>jdbc:jtds:sqlserver://192.168.1.248:1433/x3_training_3088</connection-url>
                <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
                <user-name>sa</user-name>
                <password>sa</password>
                <!-- <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name> -->
                <!-- <check-valid-connection-sql>select * from something</check-valid-connection-sql> -->
                <!-- <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name> -->
                <min-pool-size>4</min-pool-size>
                <max-pool-size>100</max-pool-size>
                <idle-timeout-minutes>0</idle-timeout-minutes>
                <track-statements/>
        </local-tx-datasource>
</datasources>

这个是我的系统库数据源,经过测试,无乱是断网、或者停止sqlserver服务在重启,开发端和客户端都能够正常连接上。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 03:20 , Processed in 0.044056 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表