oracle11G JDBC驱动的问题

今天第一次使用oracle的11G,jdk6,使用tomcat,驱动包ojdbc6.jar配置的数据源发生如下错误:

  1. SEVERE: Error while registering Oracle JDBC Diagnosability MBean.  
  2. javax.management.MalformedObjectNameException: Invalid character '  
  3. ' in value part of property  
  4. at javax.management.ObjectName.construct(ObjectName.java:602)  
  5. at javax.management.ObjectName.<init>(ObjectName.java:1394)  
  6. at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)  
  7. at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)  
  8. at java.security.AccessController.doPrivileged(Native Method)  
  9. at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)  
  10. at java.lang.Class.forName0(Native Method)  
  11. 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()做了错误的错误的处理。

使用最新的11.1.0.7.0的jdbc驱动包,问题解决

你可能感兴趣的:(java,oracle,tomcat,jdbc,Security)