Как я могу установить соединение Agroal во время выполнения с встроенной поддержкой

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

AgroalDataSource.from(
    AgroalDataSourceConfigurationSupplier()
      ...)

В настоящее время я вижу эту ошибку:

Class io.agroal.pool.ConnectionHandler[] is instantiated reflectively but was never registered. 
Register the class by using org.graalvm.nativeimage.hosted.RuntimeReflection

Установленные функции включают: [agroal, cdi, jdbc-h2, jdbc-mysql, jdbc-postgresql, kotlin, narayana-jta, resteasy, resteasy-jackson]

Он отлично работает на JVM, но не использует Graal. Такое ощущение, что это должно быть возможно, и я, вероятно, что-то здесь упускаю. Я надеялся добавитьagraol extension будет достаточно, но очевидно, что это неправильно.

1 ответ

Текущая ситуация такова, что мы настраиваем Agroal для собственных образов, только если у вас есть источник данных, определенный с помощью конфигурации Quarkus.

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

См. https://github.com/quarkusio/quarkus/blob/master/extensions/agroal/deployment/src/main/java/io/quarkus/agroal/deployment/AgroalProcessor.java и https://quarkus.io/guides/writing-native-applications-tips.

Очевидно, это не идеально. Не могли бы вы открыть вопрос на нашем GitHub, чтобы мы могли обсудить его внутри компании и посмотреть, можем ли мы улучшить ситуацию?

В конце концов, вам все равно понадобится регистрация отражения для вашего драйвера JDBC.

Другие вопросы по тегам