Обработка периодического подключения к внешней базе данных в приложении SpringJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обработка периодического подключения к внешней базе данных в приложении Spring

Сообщение Anonymous »

Я работаю над приложением Spring, которое подключается к внешней базе данных Oracle. Внешнее соединение может работать с перебоями, и когда оно выходит из строя, мне нужно сохранить данные локально. Вот мой подход:
Когда операция вставки (remoteDatabase.Save(newObject)) завершается сбоем из-за проблемы с подключением, я перехватываю исключение.
В пойманном блоке я сохраняю объект в локальную базу данных SQLite (localDatabase.Save(newObject)).
Разумный ли это подход? Существуют ли какие-либо передовые методы или альтернативные решения для обработки прерывистых подключений к внешним базам данных в приложениях Spring?
Подробнее:
Spring версия платформы: [Укажите версию Spring]
Внешняя база данных: Oracle
Локальная база данных: SQLite
Тестирование соединения: отдельный поток проверяет наличие внешнего соединения.
Обработка исключений: перехват исключений во время RemoteDatabase.Save(newObject) и возврат к localDatabase.Save(newObject)
Будем очень признательны за любые идеи и предложения!
Я пытался получить исключение из удаленной базы данных, выполнив глобальную обработку исключений, но безуспешно. ...
Исключение, которое я пытался обработать или вызвать, было:
> 2024-06-21 14:28:15.278 --- thread_id="1" thread_name="main"
> thread_priority="5" --- [DEBUG] Spring test ApplicationContext cache
> statistics: [DefaultContextCache@171b82ea size = 1, maxSize = 32,
> parentContextCount = 0, hitCount = 6, missCount = 1, failureCount = 0]
> 2024-06-21 14:28:15.280 --- thread_id="1" thread_name="main"
> thread_priority="5" --- [DEBUG] Creating new transaction with name
> [org.springframework.data.jpa.repository.support.SimpleJpaRepository.count]:
> PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly 2024-06-21
> 14:28:15.280 --- thread_id="1" thread_name="main" thread_priority="5"
> --- [DEBUG] Opened new EntityManager [SessionImpl(1913887027)] for JPA transaction 2024-06-21 14:28:15.280 --- thread_id="1"
> thread_name="main" thread_priority="5" --- [DEBUG] Creating new JDBC
> DriverManager Connection to [jdbc:oracle:thin:@localhost:1522:FREE]
> 2024-06-21 14:28:15.284 --- thread_id="1" thread_name="main"
> thread_priority="5" --- [DEBUG] Unable to acquire JDBC Connection
> [n/a] java.sql.SQLRecoverableException: IO Error: The Network Adapter
> could not establish the connection at
> oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:907)
> ~[ojdbc10-19.22.0.0.jar:19.22.0.0.0] at
> oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:820)
> ~[ojdbc10-19.22.0.0.jar:19.22.0.0.0] at
> oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:80)
> ~[ojdbc10-19.22.0.0.jar:19.22.0.0.0] at
> oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:820)
> ~[ojdbc10-19.22.0.0.jar:19.22.0.0.0] at
> oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:624)
> ~[ojdbc10-19.22.0.0.jar:19.22.0.0.0] at
> java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683)
> ~[java.sql:?] at
> java.sql/java.sql.DriverManager.getConnection(DriverManager.java:191)
> ~[java.sql:?]


Подробнее здесь: https://stackoverflow.com/questions/786 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»