Running Secure Applications

Now we can put this altogether and show the framework necessary to run the application. That framework is the following program:

package javasec.samples.appd; import java.lang.reflect.*; public class JavaRunner implements Runnable { final static int numArgs = 1; private JRClassLoader jrl; private Object args[]; private String className; JavaRunner(JRClassLoader jrl, String className, Object args[]) { this.jrl = jrl; this.className = className; this.args = args; } void invokeMain(Class clazz) { Class argList[] = new Class[1]; String strArray[] = new String[1]; argList[0] = strArray.getClass( ); Method mainMethod = null; try { mainMethod = clazz.getMethod("main", argList); } catch (NoSuchMethodException nsme) { System.out.println("No main method in " + clazz.getName( )); System.exit(-1); } try { mainMethod.invoke(null, args); } catch (Throwable e) { if (e instanceof InvocationTargetException) e = ((InvocationTargetException) e) .getTargetException( ); System.out.println("Procedure exited with exception " + e); e.printStackTrace( ); } } public void run( ) { Class target = null; try { target = jrl.loadClass(className); invokeMain(target); } catch (ClassNotFoundException cnfe) { System.out.println("Can't load " + className); } } static Object[] getArgs(String args[]) { String passArgs[] = new String[args.length - numArgs]; for (int i = numArgs; i < args.length; i++) passArgs[i - numArgs] = args[i]; Object wrapArgs[] = new Object[1]; wrapArgs[0] = passArgs; ...

Get Java Security, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.