【问题标题】:reconnect to database if connection restart如果连接重新启动,则重新连接到数据库
【发布时间】:2015-10-04 08:56:12
【问题描述】:

我有JBoss,我正在使用JNDI连接数据库,但是当数据库重新启动时,我必须重新启动JBoss以获取新的连接池,有什么属性可以重新连接吗?请帮助

 <subsystem xmlns="urn:jboss:domain:datasources:1.2">
        <datasources>
            <datasource jta="false" jndi-name="java:jboss/datasources/ams" pool-name="OracleDS" enabled="true" use-ccm="false">
                <connection-url>jdbc:oracle:thin:@rhhqrac01scant:1521/testingenv</connection-url>
                <driver-class>oracle.jdbc.OracleDriver</driver-class>
                <driver>oracle</driver>
                <pool>
                    <min-pool-size>100</min-pool-size>
                    <max-pool-size>150</max-pool-size>
                    <prefill>true</prefill>
                    <flush-strategy>FailingConnectionOnly</flush-strategy>
                </pool>
                <security>
                    <user-name>ams</user-name>
                    <password>testpassword</password>
                </security>
                <validation>
                    <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
                    <validate-on-match>false</validate-on-match>
                    <background-validation>false</background-validation>
                </validation>
                <timeout>
                    <set-tx-query-timeout>false</set-tx-query-timeout>
                    <blocking-timeout-millis>0</blocking-timeout-millis>
                    <idle-timeout-minutes>0</idle-timeout-minutes>
                    <query-timeout>0</query-timeout>
                    <use-try-lock>0</use-try-lock>
                    <allocation-retry>0</allocation-retry>
                    <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
                </timeout>
                <statement>
                    <share-prepared-statements>false</share-prepared-statements>
                </statement>
            </datasource>
            <drivers>
                <driver name="oracle" module="com.oracle.ojdbc6">
                    <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>

【问题讨论】:

    标签: java jboss datasource


    【解决方案1】:

    你可以在你的数据源标签下添加它

    <check-valid-connection-sql>select 1</check-valid-connection-sql>
    

    【讨论】:

    • 引起:javax.xml.stream.XMLStreamException:org.jboss.as.connector.util.ParserException:IJ010061:意外元素:check-valid-connection-sql
    • 你用的是哪个jboss版本?
    • JBoss 企业应用平台版本 6.4.0.GA
    • 我再次检查,发现您的 xml 文件中的验证标记下已经有了该配置。所以它应该可以工作,但如果你没有名为“dual”的表,你应该更改你的 sql。其次,使用该配置,您在重新启动数据库后仍然会首先看到连接错误。但是数据源会一一更新所有连接。所以你不需要重启你的服务器。
    • 只放 select 1 而不是 select 1 from dual ?
    【解决方案2】:

    试试这个

     <validate-on-match>true </validate-on-match>
    

    知道这会恢复连接,但不幸的是,它会给数据库带来更多负载,因为它会在每次从池中签出连接时验证连接。

    【讨论】:

      猜你喜欢
      • 2020-03-13
      • 2011-02-02
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 2023-04-02
      相关资源
      最近更新 更多