3

我正在尝试通过 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扩展就足够了,但显然没有正确选择。

4

1 回答 1

1

目前的情况是,只有当您使用 Quarkus 配置定义了数据源时,我们才会为原生图像配置 Agroal。

因此,对于您的用例,目前,您必须手动执行我们自动执行的操作。我们所做的是注册一些反射类并在原生镜像中包含一些资源。

请参阅https://github.com/quarkusio/quarkus/blob/master/extensions/agroal/deployment/src/main/java/io/quarkus/agroal/deployment/AgroalProcessor.java#L91https://quarkus.io /guides/writing-native-applications-tips#using-a-configuration-file

显然,这并不理想。你能在我们的 GitHub 上打开一个问题,以便我们可以在内部讨论它,看看我们是否应该/可以改善这种情况吗?

最后,您仍然需要为您的 JDBC 驱动程序进行一些反射注册。

于 2019-12-12T10:35:52.603 回答