Многократная проблема переключения источника данных в Spring MVC.когда 2-й источник данных недоступен, он автоматически использует 1-й источник данных, на который ссылается 2-й источник данных - PullRequest
0 голосов
/ 22 ноября 2018

Я настроил 2 источника данных в своем проекте SpringMVC, но когда 2-й источник данных недоступен, он автоматически использует 1-й источник данных, на который ссылается 2-й.Я хочу остановить это переключение.

Вот код:

dispatcher-servlet.xml:

<bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="defaultAutoCommit" value="true"/>
        <property name="testOnBorrow" value="true"/>
        <property name="initialSize" value="1"/>
        <property name="maxActive" value="1"/>
        <property name="maxWait" value="500"/>
        <property name="maxIdle" value="2"/>
</bean> 

<bean id="dataSource1" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
        <property name="driverClassName" value="${jdbc.driverClassName1}"/>
        <property name="url" value="${jdbc.url1}"/>
        <property name="username" value="${jdbc.username1}"/>
        <property name="password" value="${jdbc.password1}"/>
        <property name="defaultAutoCommit" value="true"/>
        <property name="testOnBorrow" value="true"/>
        <property name="initialSize" value="1"/>
        <property name="maxActive" value="3"/>
        <property name="maxWait" value="500"/>
        <property name="maxIdle" value="8"/> 
</bean>

BaseNamedParameterJdbcDaoSupport.java класс:

    public class BaseNamedParameterJdbcDaoSupport extends NamedParameterJdbcDaoSupport{

    @Autowired
    public void setDataSourceFor1(DataSource dataSource) {        
//      System.out.println("Main DS"+dataSource);
        setDataSource(dataSource); 
    }

}

BaseNamedParameterJdbcDaoSupport.ava: Ошибка

public class BaseNamedParameterJdbcDaoSupportForMirrorDB extends NamedParameterJdbcDaoSupport{

    @Autowired
    public void setDataSourceFor2(DataSource dataSource1) {  
//      System.out.println("ForMirrorDB dataSource1"+dataSource1); 
        setDataSource(dataSource1); 
    }

}

1 Ответ

0 голосов
/ 23 ноября 2018

Невозможно, чтобы источник данных с другим именем автоматически переключался.Я думаю, что вы реализовали некоторую другую логику для работы с этими двумя объектами DataSource.

Проверьте код DAO / Service на использование «BaseNamedParameterJdbcDaoSupport» и «BaseNamedParameterJdbcDaoSupportForMirrorDB» с правильным @ Autowired.

...