今天生产环境tomcat启动后,用户登录时系统报错:java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv
经确认数据库、程序、TOMCAT均未进行示改动。
在网上查询有说是oracle jdbc驱动的问题,但我本地使用ojdbc14.jar的驱动仍不行,
参考:http://blog.csdn.net/dacong910/article/details/5432245
本地程序连生产环境数据库调试:
DBCP borrowObject failed: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv DBCP borrowObject failed: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv DBCP borrowObject failed: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv org.apache.commons.dbcp.DbcpException: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:85) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:184) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:722) at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:117) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:108) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:312) at com.eclink.util.DBUtil.getNewConnection(DBUtil.java:160) at com.eclink.util.DBUtil.<init>(DBUtil.java:133) at com.eclink.util.DBUtil.<init>(DBUtil.java:99) at com.eclink.dectr.model.sys.OfficePostDAO.getUserInfo(OfficePostDAO.java:93) at com.eclink.dectr.controller.sys.LogonValidatorAction.login(LogonValidatorAction.java:72) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1480) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:524) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at com.eclink.dectr.filter.ActionFilter.doFilter(ActionFilter.java:84) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at com.eclink.dectr.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:110) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688) at java.lang.Thread.run(Thread.java:534) Caused by: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1130) at oracle.jdbc.dbaccess.DBConversion.failUTF8Conv(DBConversion.java:2261) at oracle.jdbc.dbaccess.DBConversion.utf8BytesToJavaChars(DBConversion.java:2061) at oracle.jdbc.dbaccess.DBConversion.utf8BytesToString(DBConversion.java:1976) at oracle.jdbc.dbaccess.DBConversion.CharBytesToString(DBConversion.java:543) at oracle.jdbc.ttc7.TTIoer.processWarning(TTIoer.java:334) at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:523) at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:83) ... 52 more DBCP borrowObject failed: java.sql.SQLException: 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv
发现具体异常是DBCP组件里面抛出来的,参考文章中有一句话:
“后话:应该是因为数据库的密码策略,增加了一步校验的功能,而老驱动则不能识别这个校验;”
刚好我发现,当使用plsql dev连接生产环境时会提示密码即将过期,询问是否要修改密码。于是诊断应该是这个密码校验引起的,将数据库修改一下,再改回来,重启TOMCAT,应用正常。
相关推荐
总之,要解决`java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource`的问题,你需要确保你的项目正确包含了Apache Commons DBCP及其相关依赖,并正确配置了`BasicDataSource`。同时,了解...
org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache.commons.lang.CharEncoding.class org.apache.commons.lang.CharRange.class org.apache.commons.lang.CharSet...
org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache.commons.lang.CharEncoding.class org.apache.commons.lang.CharRange.class org.apache.commons.lang.CharSet...
Apache Commons DBCP(Database ...通过以上措施,你可以有效地管理和解决问题,确保`org.apache.commons.dbcp.BasicDataSource`在你的应用程序中稳定、高效地运行。记得定期更新库版本,以获得最新的修复和改进。
在这个特定的错误中,我们看到的是`org.apache.commons.dbcp.BasicDataSource`,这是Apache Commons DBCP库中的一个类,用于管理数据库连接池。这个异常通常意味着在应用的类路径(ClassPath)中没有包含DBCP的jar...
com.springsource.org.apache.commons.dbcp-sources-1.2.2.osgi.jar源码 jar包
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....
Apache Commons Math 3.6.1 是一个由Apache软件基金会开发的开源库,它提供了广泛的数学和统计功能,适用于各种编程任务。这个版本是3.6.1,意味着它是对之前版本的改进和增强,可能包括错误修复、性能优化以及新...
然而,对于初学者来说,遇到错误是常有的事,比如“java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource”。这个异常表明在运行时,系统无法找到指定的类,即Apache Commons DBCP的...
com.springsource.org.apache.commons.dbcp_1.2.2.osgi.jar
jar包分享,你懂的 com.springsource.org.apache.commons.io-1.4.0.jar
commons-dbcp-1.2.2.jar commons-collections-3.2.1.jar commons-codec-1.3.jar commons-chain-1.1.jar commons-beanutils-1.6.jar 包含两个最常用的源码: commons-beanutils-1.6-src.zip commons-collections-...
com.springsource.org.apache.commons.logging-1.1.1.jar
本站为大家提供了org.apache.commons的jar包下载地址,Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动,需要此类JAR包的朋友们欢迎前来下载使用。 基本简介 commons包,根据...
这个`org.apache.commons.lang.jar`文件是该库的一个版本,包含了Lang项目的所有包,使得开发者在处理字符串、日期、数字、反射、比较等方面的工作变得更加便捷高效。以下是关于Apache Commons Lang的一些关键知识点...
Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了大量的 Java 类库,以帮助开发者解决常见的编程任务。这些类库弥补了 Java 核心库中的不足,为开发人员提供了更方便、功能更丰富的工具。"org....
`org.apache.commons.io`是这个库的核心包,包含了许多与文件、流、过滤器、读写操作相关的类和工具。 1. **文件操作**: `FileUtils` 类提供了大量的静态方法,用于执行文件和目录的操作,如复制、移动、删除、创建...
- 学习优秀的设计模式和实践:Apache Commons 项目遵循良好的设计原则,源码中充满了实用的设计模式。 - 了解如何编写可重用的代码:每个模块都尽可能地独立且具有明确的职责,这有助于创建自己的库。 - 解决实际...
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...