Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持自定义库路径 #147

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

支持自定义库路径 #147

wants to merge 1 commit into from

Conversation

KuuDS
Copy link

@KuuDS KuuDS commented Mar 13, 2024

变更说明:

  1. 增加JVM参数taos.library.path, 环境变量TAOS_LIBRARY_PATH传入lib文件的路径(支持绝对路径和相对路径)。
  2. 若用户未配置JVM参数或环境变量, 则回落调用System#loadLibrary方法
  3. 参数优先级, JVM参数>环境变量

相关ISSUE #69

 Added JVM parameter 'taos.library.path' and environment variable 'TAOS_LIBRARY_PATH'. If neither is set, system path is used as fallback.
@KuuDS KuuDS changed the title 支持自定义库路 支持自定义库路径 Mar 13, 2024
@lrzl
Copy link

lrzl commented Mar 28, 2024

#69 建议的目的是为了 使用方开发者 能将taos-jdbc跟动态库同时打到一个jar包内使用,无需运维方额外在服务器放置taos client环境。
所以我去除源码加载动态库逻辑的目的只是为了后续我自己能自由加载动态库,不是官方应合理的做法。
建议中如果识别动态库已经载入jvm是很关键的一步判断,如何能做到这个判断就可以不加载而把加载权力下放给 使用方,如果做不到这个判断目前我认为最好的方法是官方提供各个版本内置动态库的jdbc

@KuuDS
Copy link
Author

KuuDS commented Apr 3, 2024

#69 建议的目的是为了 使用方开发者 能将taos-jdbc跟动态库同时打到一个jar包内使用,无需运维方额外在服务器放置taos client环境。 所以我去除源码加载动态库逻辑的目的只是为了后续我自己能自由加载动态库,不是官方应合理的做法。 建议中如果识别动态库已经载入jvm是很关键的一步判断,如何能做到这个判断就可以不加载而把加载权力下放给 使用方,如果做不到这个判断目前我认为最好的方法是官方提供各个版本内置动态库的jdbc

这个有自己的两个考量:

  1. 最初时考虑用JNA实现加载lib的功能,但是后来发现动态库的源码里有操作JNI的代码。遂放弃JNA,毕竟工作量很大,短时间内很难实现。
  2. 本地简单试用之后, TDengine的驱动兼容性并不像传统的驱动一样成熟, 相差几个小版本就会提示动态库版本不匹配。微服务模式下,我更愿意通过挂载依赖库文件到容器,而不是修改依赖,再重新编译微服务镜像。而上述这个问题在本地调试环境和生产环境的DB版本并不一定能保持一致的情况下,会明显放大。如果后续官方可以保证驱动更强大的向下兼容性,那将lib放置在驱动里确实是最好的实现。

当然以上都是基于我自己生产环境,比较私心的考虑。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants