今天第一次使用oracle的11G,jdk6,使用tomcat,驱动包ojdbc6.jar配置的数据源发生如下错误:
- 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.<init>(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.<clinit>(OracleDriver.java:209)
- at java.lang.Class.forName0(Native Method)
- at java.lang.Class.forName(Class.java:169)
只要是访问多次数据库,肯定出现,看了看自己的代码,认为是驱动的问题,oracle 11g可以使用diagnosabilty配置logging ,com.oracle.jdbc:type=diagnosability,name=<loader>
一般用Thread.currentThread().getContextClassLoader().toString(),得到loader的。
估计是javax.management.ObjectName 抛出一个异常MalformedObjectNameException - 如果 domain、key 或 value 包含非法字符,如果 value 未遵循有关引号使用的规则。
javax.management.ObjectName 说明
public class ObjectNameextends Objectimplements Comparable<ObjectName>, QueryExp
表示 MBean 的对象名,或者能够与多个 MBean 名称相匹配的模式。
这个问题一般出现tomcat中,oracle对org.apache.catalina.loader.WebappClassLoader返回的字符toString()做了错误的错误的处理。