您的位置:首页 > 数据库

jboss7 datasource 当数据库重启自动重新获取连接

2015-12-30 09:24 405 查看
[html] view
plaincopy





<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">背景:</span>

jboss7 datasource,

oracle

最近客户现场的测试环境连的数据库极不稳定,经常会出现需要重新启动数据库的情况, 但是一旦重启数据库 则会出现 提示

执行sql错误,原因就是datasource 没有获取新的连接!

那么解决办法就是怎样让jboss每次提供连接的时候都给我们可用的最新的连接!

原配置如下:

[html] view
plaincopy





<subsystem xmlns="urn:jboss:domain:datasources:1.0">

<datasources>

<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>

<driver>h2</driver>

<security>

<user-name>sa</user-name>

<password>sa</password>

</security>

</datasource>

<datasource jndi-name="java:/comp/env/siniteksirm" pool-name="siniteksirm" enabled="true" use-java-context="true">

<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>

<driver>oracle</driver>

<pool>

<min-pool-size>10</min-pool-size>

<max-pool-size>100</max-pool-size>

</pool>

<security>

<user-name>broker</user-name>

<password>broker</password>

</security>

</datasource>

<drivers>

<driver name="h2" module="com.h2database.h2">

<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

</driver>

<driver name="oracle" module="com.oracle.jdbc">

<xa-datasource-class>oracle.jdbc.xa.OracleXADataSource</xa-datasource-class>

</driver>

</drivers>

</datasources>

</subsystem>

datasource中添加 validation

[html] view
plaincopy





<validation>

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

</validation>

最终配置如下 :

[html] view
plaincopy





<subsystem xmlns="urn:jboss:domain:datasources:1.0">

<datasources>

<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>

<driver>h2</driver>

<security>

<user-name>sa</user-name>

<password>sa</password>

</security>

</datasource>

<datasource jndi-name="java:/comp/env/siniteksirm" pool-name="siniteksirm" enabled="true" use-java-context="true">

<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>

<driver>oracle</driver>

<pool>

<min-pool-size>10</min-pool-size>

<max-pool-size>100</max-pool-size>

</pool>

<security>

<user-name>broker</user-name>

<password>broker</password>

</security>

<validation>

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

</validation>

</datasource>

<drivers>

<driver name="h2" module="com.h2database.h2">

<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

</driver>

<driver name="oracle" module="com.oracle.jdbc">

<xa-datasource-class>oracle.jdbc.xa.OracleXADataSource</xa-datasource-class>

</driver>

</drivers>

</datasources>

</subsystem>

经测试问题解决了!

参考文档:
http://stackoverflow.com/questions/128527/is-there-any-way-to-have-the-jboss-connection-pool-reconnect-to-oracle-when-conn https://developer.jboss.org/wiki/ConfigDataSources
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: