我(假设)为我的应用程序提供了以下服务器;我使用MySQL。
1)应用程序使用的数据库(位于日本的服务器)
2)数据库备份(位于秘鲁的服务器)
3)紧急数据库(位于美国的服务器)
我对Spring的功能有几个问题:
A)如何在所有数据源中同时持续存在?
B)我如何在Spring中创建一个连接池,这样如果我的第一个数据源没有响应,系统会自动使用第二个数据源?
这是我的实际applicationContext-datasource.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>META-INF/database.properties</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
此致
答案 0 :(得分:0)
如果我遇到同样的问题,我会尝试在应用程序边界之外解决它,以免应用程序与数据库拓扑结合。
我应该请求将一个对象持久化为一个逻辑实体,将Spring / Hibernate视为一个数据库并且不是应用程序的一部分,但它知道数据库拓扑和可用性,然后委托给它分发数据。
通常你可以通过以下方式解决这个问题: