[Mc4j-cvs] mc4j/src/org/mc4j/console ManagementNode.java,1.15,1.16
Brought to you by:
ghinkl
From: Greg H. <gh...@us...> - 2004-04-07 03:28:15
|
Update of /cvsroot/mc4j/mc4j/src/org/mc4j/console In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18804/src/org/mc4j/console Modified Files: ManagementNode.java Log Message: WARNING: dirty hack to support weblogic connections from mc4j on a 1.5 jre. Index: ManagementNode.java =================================================================== RCS file: /cvsroot/mc4j/mc4j/src/org/mc4j/console/ManagementNode.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ManagementNode.java 2 Apr 2004 03:25:26 -0000 1.15 --- ManagementNode.java 7 Apr 2004 03:15:16 -0000 1.16 *************** *** 179,184 **** } ! ! URLClassLoader loader = new URLClassLoader(cpURLs, ManagementNode.class.getClassLoader()); return loader; --- 179,189 ---- } ! // TODO - WARNING: GH - DISGUSTING HACK ! URLClassLoader loader = null; ! if (ManagementNode.WEBLOGIC_CONNECTION.equals(settings.getConnectionType())) { ! loader = new MeFirstClassLoader(cpURLs, ManagementNode.class.getClassLoader()); ! } else { ! loader = new URLClassLoader(cpURLs, ManagementNode.class.getClassLoader()); ! } return loader; *************** *** 189,192 **** --- 194,230 ---- } + /** + * WARNING: GH - DISGUSTING HACK + * This is an aweful little hack that allows us to execute under jdk 1.5 (which includes jmx) + * while utilizing the jmx classes we load from somewhere else. We just override the classloader + * delegation for cases of the "javax.management" classes. + */ + public static class MeFirstClassLoader extends URLClassLoader { + + public MeFirstClassLoader(URL[] urls, ClassLoader parent) { + super(urls, parent); + } + + protected synchronized Class loadClass(String name, boolean resolve) + throws ClassNotFoundException { + Class c = findLoadedClass(name); + if (c == null) { + if (name.contains("javax.management")) { + try { + c = findClass(name); + if (resolve) { + resolveClass(c); + } + } catch(ClassNotFoundException cnfe) { + c = super.loadClass(name,resolve); + } + } else { + c = super.loadClass(name, resolve); + } + } + return c; + } + } + public static IConnectionNode buildTestConnection(String connectionType) { IConnectionNode node = null; |