【问题标题】:JBoss AS 5 database connection pool re-connect routine for MS SQL ServerMS SQL Server 的 JBoss AS 5 数据库连接池重新连接例程
【发布时间】:2011-02-23 08:17:52
【问题描述】:

当从 JBoss AS 5 到 DB 的连接暂时丢失时,我想提出重新连接到 MS SQL Server 的最佳方法。

对于 Oracle,我发现了这个 SO 问题:"Is there any way to have the JBoss connection pool reconnect to Oracle when connections go bad?",它说它使用 Oracle 特定的 ping 例程并利用 JBoss' Configuring Datasources Wiki 中描述的 valid-connection-checker-class-name 属性。

我想避免的是每次从池中拉出连接时都运行另一个 SQL,这就是其他属性 check-valid-connection-sql 基本上所做的。

所以现在,我倾向于使用 exception-sorter-class-name 的方法,但我不确定这是否是 MS SQL Server 的最佳方法。

希望听到您对该主题的建议。谢谢!

【问题讨论】:

    标签: java sql-server jboss datasource connection-pooling


    【解决方案1】:

    我不确定它会按照您描述的方式(透明地)起作用。

    有效的连接检查器(这可以是 *ds.xml 文件中的 sql 语句或执行提升的类)是在从池中获取连接时调用的,因为 db 可能已经关闭它在游泳池里的时候。如果连接不再有效, 它已关闭并从数据库请求一个新的 - 这对应用程序完全透明,并且仅在从池中取出连接时发生(如您所说)。然后你可以在你的应用程序中使用它很长时间。

    异常排序器旨在向应用程序报告,例如ORA-0815 是 SQL 语句的无害或错误 return 代码。如果它是无害的,它基本上会被吞下,而对于坏的,它会作为异常报告给应用程序。

    因此,如果您想使用异常排序器来查找池中的不良连接,您需要做好准备,基本上您触发的每条语句都可能引发过时连接异常,您需要关闭连接并尝试获得一个新的。这意味着对您的代码进行适当的更改,您当然可以这样做。

    我认为不时在数据库中触发一个廉价的 sql 语句来检查来自池的连接是否仍然有效,这比“手动”进行所有这些检查要便宜得多。

    顺便说一句:虽然有适用于所有数据库的通用连接检查器 sql,但某些数据库提供了另一种测试连接是否良好的方法; Oracle 对此有一个特殊的 ping 命令,在您所指的特殊 OracleConnectionChecker 类中使用该命令。所以可能MS-SQL也有类似的东西,比简单的SQL语句要便宜。

    【讨论】:

    • 我完全同意你手动推出自己的实现的痛苦,这就是为什么我想尽可能避免它。无论如何,我找到了使用“check-valid-connection-sql”参数的折衷方案。诀窍是包含另一个名为“background-validation”的参数,它指定连接检查只应每 X 毫秒(background-validation-millis)进行一次,而不是每次使用连接时进行。
    【解决方案2】:

    我成功使用了后台验证属性:background-validation-millis from https://community.jboss.org/wiki/ConfigDataSources

    【讨论】:

      【解决方案3】:

      用JBoss 5.1(其他版本不知道),可以用

      <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MSSQLValidConnectionChecker</valid-connection-checker-class-name>
      

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 2010-11-11
        • 1970-01-01
        相关资源
        最近更新 更多