Как установить SSL-соединение с БД (SQL Server, PG), независимо от драйвера?

#java #sql #hibernate #ssl

#java #sql #спящий режим #ssl

Вопрос:

У меня есть приложение, которое подключается к базе данных. БД может быть SQL Server, PG и т.д. Мне нужно настроить приложение на использование SSL сейчас.

Я использую режим гибернации и соответствующим образом настраиваю источники данных. На данный момент я использую org.apache.commons.dbcp2.BasicDataSource .

Я понимаю, что для подключения к SQL Server с использованием SSL мне нужно использовать SQLServerDataSource . Но тогда это не сработает, если кто-то решит использовать базу данных PG.

Есть ли какой-нибудь способ динамически настраивать отдельные источники данных? Или есть общий источник данных, который я могу использовать независимо от драйвера jdbc (mssql или pg), предоставляемого во время выполнения?

Передача параметров JVM, таких как -Djavax.net.ssl.trustStore и -Djavax.net.ssl.trustStorePassword изменение строки подключения jdbc, не является вариантом.

Я использую Spring (в основном XML-конфигурации) для начальной загрузки приложения.

Комментарии:

1. Было бы полезно узнать, как загружается ваше приложение. Используете ли вы Spring, Micronaut, Dropwizard или какой-либо другой фреймворк? Каждый из тех, о которых я упомянул, предоставляет способ изменить используемый класс в зависимости от конфигурации, но это будет выглядеть немного по-другому.

2. Обновлен вопрос

Ответ №1:

Весной вы можете заменить используемый класс источника данных с помощью profiles .

Ключевая идея заключается в том, что вы можете предоставить несколько определений одного и того же компонента. Эти определения будут заключены в отдельный <beans> элемент с другим атрибутом профиля.

 <beans profile="embedded-db">
    <jdbc:embedded-database id="dataSource">
        <jdbc:script location="classpath:com/bank/config/sql/schema.sql"/>
        <jdbc:script location="classpath:com/bank/config/sql/test-data.sql"/>
    </jdbc:embedded-database>
</beans>
<beans profile="sql-server">
    <!-- Configuration of you SQL Server data source -->
</beans>
<beans profile="postgresql">
    <!-- Configuration of you PostgreSQL data source -->
</beans>
  

При запуске приложения свойство конфигурации spring.profiles.active должно быть установлено для выбора одного или нескольких профилей.

К сожалению, современная документация Spring не оказывает большой помощи в настройке конфигураций XML. Я думаю, что теперь они считаются устаревшими.