涛思库的JDBC驱动是否支持GraalVM Native Image

【TDengine 版本】 taos-jdbcdriver:3.8.0
如题,我的java程序中使用上述版本的JDBC驱动来连接涛思数据库(websocket驱动连接),现在因为某种原因需要将java程序改为GraalVM Native Image形式的,不知道JDBC驱动中是否有GraalVM Native Image不支持的代码,或者说JDBC驱动是支持在GraalVM Native Image程序中运行,所以想询问一下。

@TDuser_sheyj 帮忙答复一下。

我们没有用 GraalVM Native Image 验证过。仅给出一些建议

  1. 在你的应用依赖中排除 httpclient 和 JNI 相关库,只保留 Jackson、Netty、Guava、SLF4J 及驱动本身。
  2. 代码中显式注册 WebSocketDriver 实例,避免 SPI 扫描到 REST/JNI 驱动。
  3. 连接 URL 必须使用 jdbc:TAOS-WS:// 前缀。
  4. 使用 GraalVM Tracing Agent 在普通 JVM 下完整运行你的数据库操作,生成反射和资源配置。
  5. 检查生成的配置,删除任何 REST 或 JNI 驱动类的条目。
  6. 为 Netty 的 WebSocket 和 SSL 相关类添加 --initialize-at-build-time 参数。
  7. 添加必要的 --add-opens 打开 JDK 内部包供 Netty 使用。
  8. 使用 slf4j-jdk14 作为日志实现,并确保其 SPI 文件被包含在镜像中。
  9. 构建 Native Image 时指定反射配置目录,并关闭 fallback。
  10. 运行原生镜像,验证 WebSocket 连接和所有 SQL 操作是否正常。
1 个赞