在JBoss数据源中,我如何为我想要的数据库故障转移提供多个连接字符串。
将有两个具有相同表的Mysql数据库说DB1和DB2。我想向DB1插入数据,如果DB1关闭,那么我需要将它插入DB2。在插入DB2期间,如果DB1出现,我需要将其余数据插入到DB1中。如何在JBoss中配置它?
答案 0 :(得分:2)
请遵循此文档。 Jboss有配置设置。 https://community.jboss.org/wiki/JBossJCADatabaseFailover
此外,如果您不使用JNDI和普通JDBC调用,我还有另一个解决方案 - 假设您正在进行jdbc调用,那么您将需要获得数据库连接,如果数据库已关闭,那么您将获得数据库连接异常,在try catch块中,如果遇到连接异常,请在catch块中为第二个数据库创建一个连接: - )
答案 1 :(得分:2)
<?xml version="2.0" encoding="UTF-8"?>
<!-- $Id$ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDSTest</jndi-name>
<use-java-context>true</use-java-context>
<connection-url>jdbc:mysql:loadbalance://ip1,ip2:3306/dbname?</connection-url>
<url-delimiter>,</url-delimiter>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<connection-property name="readOnly">false</connection-property>
<autoReconnect>true</autoReconnect>
<failOverReadOnly>false</failOverReadOnly>
<user-name>userName</user-name>
<password>password</password>
<check-valid-connection-sql>selcect count(*) from TEST_TAB</check-valid-connection-sql>
<maxReconnects>0</maxReconnects>
<initialTimeout>15</initialTimeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
<!-- Advanced options for the MySQL Driver can be set with
<connection-property name="property">value</connection-property>
-->
<min-pool-size>5</min-pool-size>
<!-- Don't set this any higher than max_connections on your
MySQL server, usually this should be a 10 or a few 10's
of connections, not hundreds or thousands -->
<max-pool-size>20</max-pool-size>
<!-- Don't allow connections to hang out idle too long,
never longer than what wait_timeout is set to on the
server...A few minutes is usually okay here,
it depends on your application
and how much spikey load it will see -->
<!-- If you're using Connector/J 3.1.8 or newer, you can use
our implementation of these to increase the robustness
"mysql-ds.xml" 64L, 3683C of the connection pool. -->
<exception-sorter-class-name>
com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter
</exception-sorter-class-name>
<valid-connection-checker-class-name>
com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker
</valid-connection-checker-class-name>
<!-- sql to call when connection is created -->
<new-connection-sql>select 1</new-connection-sql>
<!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers -->
<check-valid-connection-sql>
select 1
</check-valid-connection-sql>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
这适用于jboss mapping