В настоящее время я работаю над приложением Java 8 с Vaadin и Hibernate, которое пытаюсь перенести в Azure для тестирования. До сих пор все работало, за исключением одной вещи:
Когда я активирую опцию требуется SSL в MariaDB в Azure, я больше не могу подключиться:
Caused by: java.sql.SQLException: SSL connection is required. Please specify SSL options and retry.
К сожалению, яЯ не писал это приложение сам, и я не слишком хорошо знаком ни с Vaadin, ни с Hibernate, ни даже с Java в целом, а также с тем, как устанавливать соединения ssl или db с ними.
Поэтому мне нужна помощь:
Этострока подключения JDBC в файле Servlet.java, где, по моему мнению, происходит инициализация db:
Connection con = DriverManager.getConnection("jdbc:mysql://<username>.mariadb.database.azure.com:3306/<db>?autoReconnect=true", "<username>", "<password>");
, которую я изменил, просто добавив ее в URL: &useSSL=true&requireSSL=true&verifyServerCertificate=true
Теперь приложение больше не останавливается на инициализации БД, но все еще падает до того, как страница полностью отображается, с тем же сообщением об ошибке.
Я обнаружил hibernate.cfg.xml
со следующим содержимым (я удалилсопоставления, чтобы сделать его короче):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Hibernate -->
<property name="hibernate.use_sql_comments">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- Hikari -->
<property name="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</property>
<property name="hibernate.hikari.dataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlDataSource</property>
<property name="hibernate.hikari.dataSource.url">jdbc:mysql://dbname.mariadb.database.azure.com:3306/db</property>
<property name="hibernate.hikari.dataSource.user">username</property>
<property name="hibernate.hikari.dataSource.password">password</property>
<property name="hibernate.hikari.dataSource.cachePrepStmts">true</property>
<property name="hibernate.hikari.dataSource.prepStmtCacheSize">250</property>
<property name="hibernate.hikari.dataSource.prepStmtCacheSqlLimit">2048</property>
<property name="hibernate.hikari.dataSource.useServerPrepStmts">true</property>
</session-factory>
</hibernate-configuration>
Что мне нужно изменить там, чтобы использовать SSL для соединения?