池大小约为50的理想背景验证 - 毫秒值

时间:2013-11-08 06:41:28

标签: java oracle11g datasource jndi jboss5.x

我们正在将jboss企业应用服务器5.x用于我们的应用程序
我们还使用jboss数据源*-ds.xml来建立连接池 下面是数据源xml文件

<datasources>
        <local-tx-datasource>
                <jndi-name>myappDS</jndi-name>
                <connection-url>jdbc:oracle:thin:@ip:1521:sid</connection-url>
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                <user-name>usr</user-name>
                <password>pass</password>
                <min-pool-size>5</min-pool-size>
                <max-pool-size>50</max-pool-size>
                <blocking-timeout-millis>5000</blocking-timeout-millis>
                <idle-timeout-minutes>15</idle-timeout-minutes>
                <autoReconnect>true</autoReconnect>
                <failOverReadOnly>false</failOverReadOnly>
                <maxReconnects>50</maxReconnects>
                <initialTimeout>15</initialTimeout> 
                <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
                <background-validation-millis>150000</background-validation-millis>
                <validate-on-match>false</validate-on-match>
                <!--
                        corresponding type-mapping in the standardjbosscmp-jdbc.xml
                        (optional)
                -->
                <metadata>
                        <type-mapping>Oracle11g</type-mapping>
                </metadata>
        </local-tx-datasource>
</datasources>

现在,您可以看到我们正在使用查询进行后台连接验证 我的理解是jboss将尝试为当前池中的每个连接执行验证查询以验证连接
1。我的理解是否正确?
2. 如果是,那么理想的<background-validation-millis>值应该是什么,前提是我的最大池大小为50,而数据库只在周末重启。我们引入了此验证,因为无论何时数据库重新启动,我们都必须重新启动Jboss服务器,否则它无法自动连接到数据库。

如果问题不明确,请告诉我 提前谢谢。

1 个答案:

答案 0 :(得分:0)

配置设置check-valid-connection-sql指定的sql将在用户从池中检出连接时返回连接之前运行。 background-validation-millis子句确保验证在单独的线程中运行,并指定检查的间隔。