最近客户现场的测试环境连的数据库极不稳定,经常会出现需要重新启动数据库的情况, 但是一旦重启数据库 则会出现 提示 ,执行sql错误,原因就是datasource 没有获取新的连接!
那么解决办法就是怎样让jboss每次提供连接的时候都给我们可用的最新的连接!
文章目录
- 一、环境配置
- 二、配置文件路径
- 三、添加重连标签
- 四、配置截图
- 五、配置后的文件总览
- 六、其他解决办法
- 6.1. Jboss数据库连接断开自动重连
- 6.2. Jboss配置自动重连数据库
一、环境配置
应用服务器 | jboss 7 |
---|---|
数据库 | oracle |
二、配置文件路径
在数据源standalone.xml配置文件中添加此标签即可
/app/wildfly-10.1.0.Final/standalone/configuration/standalone.xml
三、添加重连标签
<validation> <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql> </validation>
四、配置截图
五、配置后的文件总览
<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>
六、其他解决办法
6.1. Jboss数据库连接断开自动重连
应用服务器 | jboss |
---|---|
数据库 | oracle |
Jboss默认配置是数据库连接端口后,服务就会出现异常,无法访问,此时必须重启Jboss服务才能重新连接上数据库。
在jboss/server/defult/deploy/oracle-ds.xml
中加入:
<new-connection-sql>select 1 from dual</new-connection-sql>
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
配置后的文件总览
<?xml version="1.0" encoding="utf-8"?><datasources> <local-tx-datasource> <jndi-name>OracleDS</jndi-name> <connection-url>jdbc:oracle:thin:@172.30.26.44:1521:orcl</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>hadiandev</user-name> <password>hadiandev</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>Oracle9i</type-mapping> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <idle-timeout-minutes>1</idle-timeout-minutes> <track-statements/> <prepared-statement-cache-size>32</prepared-statement-cache-size> <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql> <new-connection-sql>select 1 from dual</new-connection-sql> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name> </metadata> </local-tx-datasource>
</datasources>
6.2. Jboss配置自动重连数据库
应用服务器 | jboss |
---|---|
数据库 | mysql |
<validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> <check-valid-connection-sql>select 1</check-valid-connection-sql> <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>