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.