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