SEVERE: Error while registering Oracle JDBC Diagnosability MBean
I get the following when using the 11g JDBC driver (ojdbc6.jar) when the OracleDriver class is accessed multiple times within the same JVM
[dbunit] Aug 30, 2007 9:12:44 AM oracle.jdbc.driver.OracleDriver registerMBeans
[dbunit] SEVERE: Error while registering Oracle JDBC Diagnosability MBean.
[dbunit] javax.management.InstanceAlreadyExistsException: com.oracle.jdbc:type=diagnosability,name=java.net.URLClassLoader@14318bb
[dbunit] at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
[dbunit] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)
[dbunit] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)
[dbunit] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
[dbunit] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
[dbunit] at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
[dbunit] at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:305)
[dbunit] at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
[dbunit] at java.security.AccessController.doPrivileged(Native Method)
[dbunit] at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)
[dbunit] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[dbunit] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
[dbunit] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
[dbunit] at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[dbunit] at java.lang.Class.newInstance0(Class.java:355)
[dbunit] at java.lang.Class.newInstance(Class.java:308)
[dbunit] at org.dbunit.ant.DbUnitTask.createConnection(DbUnitTask.java:340)
[dbunit] at org.dbunit.ant.DbUnitTask.execute(DbUnitTask.java:266)
[dbunit] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[dbunit] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[dbunit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[dbunit] at java.lang.reflect.Method.invoke(Method.java:597)
[dbunit] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[dbunit] at org.apache.tools.ant.Task.perform(Task.java:348)
[dbunit] at org.apache.tools.ant.Target.execute(Target.java:357)
[dbunit] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[dbunit] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[dbunit] at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
[dbunit] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[dbunit] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
[dbunit] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
[dbunit] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[dbunit] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[dbunit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[dbunit] at java.lang.reflect.Method.invoke(Method.java:597)
[dbunit] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[dbunit] at org.apache.tools.ant.Task.perform(Task.java:348)
[dbunit] at org.apache.tools.ant.Target.execute(Target.java:357)
[dbunit] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[dbunit] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[dbunit] at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[dbunit] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[dbunit] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[dbunit] at org.apache.tools.ant.Main.runBuild(Main.java:698)
[dbunit] at org.apache.tools.ant.Main.startAnt(Main.java:199)
[dbunit] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[dbunit] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
In our case we're calling multiple DB operations within the same build file and then after the 1st call we encounter that error for every operation.
It doesn't fail anything but it would seem that there is a static block in the OracleDriver class that tries to register the MBean every time it is touched whether or not it was previously registered.
Might consider a flag or some check to prevent this every time as it made some people skittish when they encountered it, lol.