@@ -39,24 +39,11 @@ public final class Main
final File installDirectory = findInstallDir();
System.setProperty( "myrmidon.home", installDirectory.toString() );
//setup classloader appropriately for myrmidon jar
final File libDir = new File( installDirectory, "lib" );
final URL[] libUrls = buildURLList( libDir );
final URLClassLoader libClassLoader = new URLClassLoader( libUrls );
final File containerLibDir = new File( installDirectory, "bin" + File.separator + "lib" );
final URL[] containerLibUrls = buildURLList( containerLibDir );
final URLClassLoader sharedClassLoader = createSharedClassLoader( installDirectory );
final URLClassLoader classLoader =
new URLClassLoader( containerLibUrls, libClassLoader );
//load class and retrieve appropriate main method.
final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" );
final Method method = clazz.getMethod( "main", new Class[]{args.getClass()} );
Thread.currentThread().setContextClassLoader( classLoader );
createContainerClassLoader( installDirectory, sharedClassLoader );
//kick the tires and light the fires....
method.invoke( null, new Object[]{args} );
execMainClass( classLoader, args );
}
catch( final InvocationTargetException ite )
{
@@ -70,6 +57,40 @@ public final class Main
}
}
private static void execMainClass( final URLClassLoader classLoader, final String[] args )
throws Exception
{
//load class and retrieve appropriate main method.
final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" );
final Method method = clazz.getMethod( "main", new Class[]{args.getClass()} );
Thread.currentThread().setContextClassLoader( classLoader );
//kick the tires and light the fires....
method.invoke( null, new Object[]{args} );
}
private static URLClassLoader createContainerClassLoader( final File installDirectory,
final URLClassLoader sharedClassLoader )
throws Exception
{
final File containerLibDir = new File( installDirectory, "bin" + File.separator + "lib" );
final URL[] containerLibUrls = buildURLList( containerLibDir );
final URLClassLoader classLoader =
new URLClassLoader( containerLibUrls, sharedClassLoader );
return classLoader;
}
private static URLClassLoader createSharedClassLoader( final File installDirectory )
throws Exception
{
//setup classloader appropriately for myrmidon jar
final File libDir = new File( installDirectory, "lib" );
final URL[] libUrls = buildURLList( libDir );
final URLClassLoader libClassLoader = new URLClassLoader( libUrls );
return libClassLoader;
}
private static final URL[] buildURLList( final File dir )
throws Exception
{