解决Tomcat下连接Oracle报错“Error while registering Oracle JDBC Diagnosability MBean.”

Tomcat不失为一个好的开发学习容器,但使用Oracle 11g自带的JDBC驱动ojdbc6.jar和JDK6一起运行的时候,特别是和spring框架一起使用会报错:

SEVERE: Error while registering Oracle JDBC Diagnosability MBean.
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
at javax.management.ObjectName.construct(ObjectName.java:602)
at javax.management.ObjectName.(ObjectName.java:1394)
at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.OracleDriver.(OracleDriver.java:209)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
。。。

另外,多次访问Oracle本机数据库是也会出现同样的错误,仔细检查代码发现代码并没有错误,用Google查找了一下,很多信息都无用。通过查询Oracle社区发现这是Oracle Database 11g Release 1 (11.1.0.6.0) JDBC Drivers 的一个Bug。更新到11.1.0.7.0版本的驱动,则现象消失。

仅此记载方便部署人员解决问题,新版JDBC驱动下载地址http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/htdocs/jdbc_111060.html