Как я могу создать соединение 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 будет достаточно, но, очевидно, оно неправильно подобрано.


person s1m0nw1    schedule 12.12.2019    source источник


Ответы (1)


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

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

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

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

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

person Guillaume Smet    schedule 12.12.2019