【发布时间】:2022-01-11 16:12:14
【问题描述】:
我加入了一个新项目,我正在通过 Eclipse 处理它。作为参考,服务器在 Oracle 19c 上运行,并且由不同的团队管理。
我尝试将项目放到我的 Tomcat 服务器上并连接到它,但它给了我一个 ORA-28040 异常。这是确切的异常消息:
2022/1/11 11:08:45.847 [TRACE] com.nuorbit.persistence.DBConnection Opening DriverManager connection
2022/1/11 11:08:46.402 [TRACE] com.nuorbit.persistence.DBConnection Opening DriverManager connection
2022/1/11 11:08:46.946 [ERROR] com.nuorbit.utils.Errors java.sql.SQLException: ORA-28040: No matching authentication protocol
java.sql.SQLException: ORA-28040: No matching authentication protocol
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:294)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:357)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.nuorbit.persistence.DBConnection.getConnectionByDriverManager(DBConnection.java:113)
at com.nuorbit.persistence.DBConnection.getConnection(DBConnection.java:77)
at com.nuorbit.persistence.DBConnection.getConnection(DBConnection.java:65)
at com.nuorbit.utils.Settings.getSetting(Settings.java:116)
at com.nuorbit.servlet.Startup.init(Startup.java:22)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1152)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1097)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:990)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4952)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5266)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我四处寻找可能导致这种情况的原因,发现了两个常见的答案:替换我的 ojdbc jar 文件,或通过添加以下代码段来更改服务器的 sqlnet.ora 文件:
SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
由于服务器不在我的控制之下,我尝试做前者。我进入构建路径,并将 ojdbc14.jar 替换为 ojdbc8-19.3.0.0.jar。但是,这仍然会导致相同的错误,所以我不确定我做错了什么。
作为参考,我可以使用 SQL Developer 连接到服务器,也可以在 Eclipse 的数据源资源管理器中使用数据库连接,所以我的项目似乎有问题。
如果有什么我可以澄清的,请告诉我。
【问题讨论】:
-
请编辑您的问题以包含您收到的错误消息的全文。谢谢。