Java 如果连接重新启动,请重新连接到数据库

Java 如果连接重新启动,请重新连接到数据库,java,jboss,datasource,Java,Jboss,Datasource,我有JBoss,我正在使用JNDI连接到数据库,但当数据库重新启动时,我必须重新启动JBoss以获取新的连接池,是否有任何属性可以重新连接?请帮助 <subsystem xmlns="urn:jboss:domain:datasources:1.2"> <datasources> <datasource jta="false" jndi-name="java:jboss/datasources/ams" pool-name=

我有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>

jdbc:oracle:thin:@rhhqrac01scant:1521/testingenv
oracle.jdbc.OracleDriver
神谕
100
150
真的
仅连接失败
ams
测试密码
从双重选择中选择1
假的
假的
假的
0
0
0
0
0
0
假的
oracle.jdbc.OracleDriver

您可以将其添加到数据源标记下

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

您可以将其添加到数据源标记下

<check-valid-connection-sql>select 1</check-valid-connection-sql>
选择1
试试这个

 <validate-on-match>true </validate-on-match>
true
知道这会恢复连接,但不幸的是,这会增加数据库的负载,因为每次从池中签出连接时,它都会验证连接。

尝试此操作

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

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

原因:javax.xml.stream.XMLStreamException:org.jboss.as.connector.util.ParserException:IJ010061:意外元素:检查有效连接SQLJboss您使用的是哪个jboss版本?jboss企业应用程序平台版本6.4.0.GAI再次检查,我看到您的xml文件中的validation标记下已经有了该配置。所以它应该可以工作,但如果没有名为“dual”的表,则应该更改sql。其次,在重新启动数据库后,使用该配置,您仍然会在第一时间看到连接错误。但是datasource将逐个更新所有连接。因此,您无需重新启动服务器。只需将select 1放在dual中,而不是select 1?原因:javax.xml.stream.XMLStreamException:org.jboss.as.connector.util.ParserException:IJ010061:意外元素:检查有效连接SQL6您使用的jboss版本是哪个jboss版本?jboss Enterprise Application Platform版本6.4.0.GAI再次检查并我看到您已经在xml文件的validation标记下有了该配置。所以它应该可以工作,但如果没有名为“dual”的表,则应该更改sql。其次,在重新启动数据库后,使用该配置,您仍然会在第一时间看到连接错误。但是datasource将逐个更新所有连接。因此,您将不需要重新启动服务器。是否只从双通道中选择1而不是选择1?