Можно ли установить несколько URL для источника данных Tomcat? - PullRequest
0 голосов
/ 11 октября 2019

У нас есть резервная база данных (которую мы хотим, чтобы tomcat переключал при сбое в случае сбоя основной базы данных).

Пытается настроить следующее, но это не работает, я что-то упустил?

<Resource auth="Container"
          driverClassName="oracle.jdbc.driver.OracleDriver"
          initialSize="5"
          maxIdle="10"
          maxTotal="15"
          maxWaitMillis="15000"
          name="jdbc/dbcporacle"
          username="username"
          password="xxxxxxxx"
          testOnBorrow="true"
          type="javax.sql.DataSource"
          validationQuery="select 1 from dual"
          url="jdbc:oracle:thin:@dbhost11111.com:3203/dbsvc111, jdbc:oracle:thin:@dbhost22222.com:3203/dbsvc111"/>

Примечание 2 URL (через запятую) в атрибуте url

1 Ответ

0 голосов
/ 11 октября 2019
  1. Мне не известно, что когда-либо существовала такая возможность предоставить два URL-адреса и предположить, что они оба имеют одинаковые имя пользователя / пароль. Где вы взяли эту информацию? Или вы просто слепо пытались?
  2. Переход на другую базу данных не так прост, как подключение к другому URL-адресу. Ну, сначала так и есть, но что происходит, когда исходная база данных возвращается в онлайн? Как он получает все обновления, которые были записаны во вторичную базу данных? Как вы определите, что пришло время подключиться к исходному?

Один из правильных способов справиться со сбоями - сконфигурировать ваши базы данных в качестве кластера - они будут иметь один URL-адрес, к которому подключается приложение, и прозрачно обрабатывать аварийное переключение независимо от вашего приложения.

Итак: Вы что-то упускаете? Да: настройка источника данных на два URL-адреса никогда не должна была работать (не говоря уже о том, чтобы работать таким образом), и это все равно не решит вашу проблему.

И если ваша база данных доступна только для чтения, так что вы может прозрачно переключаться между альтернативами: обработайте это на уровне приложения и просто настройте две базы данных, к которым ваше приложение может перейти при сбое. Таким образом, ваше приложение будет иметь дело с этим. Конечно, вы можете реализовать свой собственный DataSource для обработки такой передачи при сбое одного из них.

...