主题:

实现在IDEA进行行云xcloud/cirrodata的客户端管理

前置条件:

  1. XCloud相关JDBC包

过程:

一、新增驱动程序 并且把行云的7个依赖导入进去,然后找到XcloudDriver的驱动类(URL模板没必要填)

XCloudJDBC.jar[行云驱动+存储驱动]

libthrift-0.9.0.jar[传输使用]

slf4j-api-1.7.12.jar[传输使用]

slf4j-log4j12-1.7.2.jar[传输使用]

lz4-1.3.0.jar[压缩使用]

log4j-1.2.17.jar[日志使用]

XCloud_SP_Procedure_Parser-0.1.4.jar[全解义工具]

二、在驱动程序的“选项”里面,自定义”保持活动查询“。不然的话检测不到心跳会报错,”事务控制“自动,”切换架构“自动,”启动脚本“空,内省-自动同步勾选(除系统架构之外的所有架构)

SELECT 'keep alive' from dual

三、高级中,选择右下角的”专家选项“并且把DBMS选择为<auto detect>

四、去数据源中

五、”常规“中的连接类型为”URL only“,输入相关信息

六、”高级“中点击右下角的专家选项,把”不对JDBC元数据调用进行转义“打勾(这个是最重要的!!!!!不勾这个,就会调用大量的xcloud没有实现的方法,然后报错) , ”使用IDE代理设置“ 这个没看出啥用,打不打勾都能用

接下来就完事了,如果想要挪到DBeaver中的话,大体跟这个相同,只不过添加数据源的时候要选择”通用“,然后就完事了,控制台第一次打开会报错(不知道为啥IDEA不报错),但是多打开两遍就好了

补充:最好还是修改一下源码(虽然报这个错误,但是依然查出表了,所以我说“最好是改”,其实改不改都行,不改的话,就用用看看,如果没其他影响,那也无所谓),把XCloudDatabaseMetaData 里面的getCatalogTerm这个方法改成retrun ”“;就行了。不然总会报错[XCloudDatabaseMetaData getCatalogTerm] Not Implemented yet.

用jd-gui反编译XCloudDatabaseMetaData这个类,然后在反编译的java中修改这个方法,变成return ”“ 然后用命令

win:javac -classpath "path/to/jar1.jar;path/to/jar2.jar" YourJavaFile.java
linux:javac -classpath "path/to/jar1.jar:path/to/jar2.jar" YourJavaFile.java
在 Windows 系统中,文件路径分隔符是分号 (;),而在 Unix-like 系统(包括 macOS和Linux)中,使用的是冒号 (:)。

使用上述命令将java编译成class之后,使用7-zip打开xcloud的jdbc-jar包,然后替换这个class就行了

上述命令的作用是 使用原xcloud的jdbc-jar包和log4j的jar包作为环境来编译XCloudDatabaseMetaData.java这个文件,不然会报依赖错误的~

结束~