how to make database driver support build with graalvm like quarkus jdbc extenstion

36 views Asked by At

I have looked at the source code of quarkus jdbc mysql and found that there is no reflect config or build at runtime config,how to make database driver support build with graalvm,have any sample or jdbc extension doc ? Thx.

1

There are 1 answers

0
ozkanpakdil On

You need to make extension for quarkus like in https://github.com/quarkusio/quarkus/tree/main/extensions/jdbc just copy any of them and create your JDBC extension from it and you have your JDBC driver ready for quarkus and graalvm.

For example MySQL reflection configs made in java like below

public final class MySQLJDBCReflections {

    @BuildStep
    void registerDriverForReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {

        reflectiveClass.produce(ReflectiveClassBuildItem.builder(Driver.class.getName()).build());
        reflectiveClass.produce(
                ReflectiveClassBuildItem.builder(FailoverDnsSrvConnectionUrl.class.getName())
                        .build());
        reflectiveClass.produce(
                ReflectiveClassBuildItem.builder(FailoverConnectionUrl.class.getName()).build());
        reflectiveClass
                .produce(ReflectiveClassBuildItem.builder(SingleConnectionUrl.class.getName())
                        .build());
        reflectiveClass.produce(
                ReflectiveClassBuildItem.builder(LoadBalanceConnectionUrl.class.getName())
                        .build());
        reflectiveClass.produce(ReflectiveClassBuildItem.builder(LoadBalanceDnsSrvConnectionUrl.class.getName())
                .build());
        reflectiveClass.produce(ReflectiveClassBuildItem.builder(ReplicationDnsSrvConnectionUrl.class.getName())
                .build());

Check here for full source code.

And you can find MySQL runtime configuration here.

Reference: https://github.com/oracle/graal/issues/1748