tomcat通过jdbc连接Oracle12c时报ORA-28040:没有匹配的验证协议错误

提示:Invocation of init method failed; nested exception is java.sql.SQLException: ORA-28040: 没有匹配的验证协议

问题背景

在部署公司产品时,启动tomcat,页面无法打开,查看tomcat运行日志发现,程序报:Invocation of init method failed; nested exception is java.sql.SQLException: ORA-28040: 没有匹配的验证协议

问题原因

查阅Oracle官网发现,oracle、jdk、ojdbc三者存在对应关系,而我的环境为Oracle12c+jdk1.8+ojdbc14(公司程序包)

处理过程

尝试的第一种方法是修改服务器上的sqlnet.ora文件:

文件路径:oracle安装目录\dbhome_1\NETWORK\ADMIN\sqlnet.ora;将该文件末尾加上:SQLNET.ALLOWED_LOGON_VERSION=8,尝试之后以失败告终。

尝试的第二种方法是替换程序包中的ojdbc.jar包

ojdbc7.jar包可以从Oracle客户端程序安装路径获取,获取路径为:\product\11.2.0\client_1\jdbc\lib,选择对应的jar包替换WEB_INFO下的ojdbc14.jar包,启动程序,成功启动。

第三种方法替换jdk中的jar包(推荐此方法):

由于公司是产品级的项目,程序经常迭代,需要频繁替换java文件夹,使用第二种方法没次升级都需要替换jar包,比较繁琐,于是了解到java项目jar包的加载顺序为jdk>tomcat>web,因此可以直接将此jar包放到了jdk安装路径下的jre\lib\ext路径下,问题解决

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: