【YashanDB 知识库】如何配置 jdbc 驱动使 getDatabaseProductName() 返回 Oracle
本文转自 YashanDB 官网,具体内容请见https://www.yashandb.com/newsinfo/7352676.html?templateId=1718516
问题现象
某些三方件,例如 工作流引擎 activiti,暂未适配 yashandb,使用中会出现如下异常:
问题的风险及影响
影响客户业务无法进行。
问题影响的版本
所有的 yashandb jdbc 驱动版本。
问题发生原因
工作流引擎 activiti 在启动时,会检测数据库厂商。其目前并未适配 yashandb,故不认识 yashandb
conn.getMetaData().getDatabaseProductName()方法返回的 YashanDB,进而抛出异常退出。
解决方法及规避方式
yashandb jdbc 1.7.1 及以后版本在连接串中提供了 productName 选项,可以指定为 Oracle(activiti 是支持 oracle 的)。
问题分析和处理过程
activiti 在启动时会进行 databaseProductName 的判断,如果不匹配会异常退出:
上面截图中的 databaseTypeMappings 初始化如下:
可以看到,并不支持 yashandb。所以 yashandb 的 jdbc 驱动要加一个配置参数 productName,可以在这种情况下返回 Oracle。
经验总结
如下 java 代码可以检测当前 jdbc 驱动是否支持 productName 参数:
如果输出为 Oracle,那么支持;如果输出为 YashanDB,那么不支持。
评论