Как управлять настройками базы данных в веб-приложении Spring MVC? - PullRequest
1 голос
/ 28 сентября 2010

Я работал с Spring Framework 3.0 последние пару недель и был очень впечатлен.Это мой первый проект с Java.Моя главная проблема заключается в том, что я не могу найти способ позволить конечному пользователю управлять своим собственным подключением к базе данных из веб-приложения.Проект, над которым я работаю, будет установлен на компьютере клиента и предоставит всю информацию о подключении.На этом этапе всякий раз, когда источник данных недоступен, я получаю сообщение об ошибке, я не уверен, как его обработать:

java.sql.SQLException: Network error IOException: Connection refused

Я пытался лениво загрузить источник данных в конфигурации xml, однако он все еще загружался, когда приложение запускалось во времяфаза предварительного создания синглетонов.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"     
    lazy-init="true">    
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url"
      value="${jdbc.urlprefix}://${jdbc.server}:${jdbc.port}/${jdbc.database}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialSize" value="2" />
    <property name="maxActive" value="5" />
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
    lazy-init="true">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">${hibernate.dialect}</prop>
        <prop key="hibernate.show_sql">false</prop>
      </props>
    </property>
    <property name="annotatedClasses">
      <list>
           ....
      </list>
    </property>
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    lazy-init="true">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

Я надеюсь, что когда база данных недоступна или неправильно настроена, я могу просто перенаправить пользователя на страницу, не зависящую от соединения с базой данных, чтобы можно было управлять настройками.Я просто не уверен, как это сделать, когда контейнер IoC ожидает, что источник данных будет настроен правильно с самого начала.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Spring's AbstractRoutingDataSource является промежуточным источником данных, который направляет вызовы getConnection () в другой целевой источник данных, определенный во время выполнения.Задайте целевой источник данных по умолчанию для базы данных в памяти, чтобы была база данных для подключения при загрузке контекста приложения.Когда пользователь предоставляет информацию о соединении, ваш подкласс AbstractRoutingDataSource может маршрутизировать к другому источнику данных, настроенному с информацией о соединении.

0 голосов
/ 29 сентября 2010

это взломать .... использовать базу данных в памяти в качестве конфигурации по умолчанию.

если при запуске система все еще является базой данных по умолчанию, то вы знаете, что произошла ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...