public Object run() throws Exception { final ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (cl != null && cl != DriverManagerAccessor.class.getClassLoader()) { final Class<?> definedClass = DriverManagerAccessorSupport.define(cl); final Method method = definedClass.getDeclaredMethod("getRealConnection", String.class, String.class, String.class); method.setAccessible(true); return method.invoke(null, jdbcURL, userName, password); } else { throw sqlException; } } });
byte[] b = loadBytes(); Object[] args = new Object[]{DriverManagerAccessor.class.getName().replace('/', '.'), b, new Integer(0), new Integer(b.length)}; Class<?> clazz = (Class<?>) defineClass.invoke(loader, args);
public Object run() throws Exception { final ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (cl != null && cl != DriverManagerAccessor.class.getClassLoader()) { final Class<?> definedClass = DriverManagerAccessorSupport.define(cl); final Method method = definedClass.getDeclaredMethod("getRealConnection", String.class); method.setAccessible(true); return (Connection) method.invoke(null, jdbcURL); } else { throw sqlException; } } });