This is not the recommended way to register Drivers,
you should just be able to call Class.forName() or equivelent and allow the Driver to register itself as the Class is loaded.
The thing that confuses me is that the constructor you are using for URLClassLoader is supposed to delegate correctly by default. From the JavaDocs:
Constructs a new URLClassLoader for the specified URLs using the default delegation parent ClassLoader.
Sounds like what we want, doesn't it? ie when Classes loaded by the URLClassLoader need access to the DriverManager, it delegates to the defalt, which should be the bootloader.
Maybe try to explicity specify the parent ClassLoader as the one that manages the DriverManager
ie
Failing this, in your original code, I'd try DriverManager.getDrivers and find out for sure if the correct DriverManager is loading the Drivers specified by the URLClassLoader.
There isn't a programatic way to find the Classes loaded by a ClassLoader, but running it with
java -verbose:class may help, except that it doesn't say which ClassLoader loads the class. The DriverManager may show up as being loaded twice though.
Hope this helps.
Dave.