The Java API can be used to create new realms and connect realms together through importation of specific packages.
The core of the
classworlds infrastructure is
class. An application must create a
It is advisable to store the instance as a singleton or some other
ClassWorld world = new ClassWorld();
ClassWorld is created, realms within it
can be created. These realms effectively only allow loading
of the core JVM classes.
ClassWorld world = new ClassWorld(); ClassRealm containerRealm = world.newRealm( "container" ); ClassRealm logComponentRealm = world.newRealm( "logComponent" );
In order to make each
ClassRealm useful, constituent
must be added to that each can provide certain classes.
containerRealm.addConstituent( containerJarUrl ); logComponentRealm.addConstituent( logComponentJarUrl );
Now, links between the various realms need to be created to allow classes loaded from one to be available to classes loaded in another.
logComponentRealm.importFrom( "container", "com.werken.projectz.component" );
The container implementation can then be loaded from it's realm and used.
Class containerClass = containerRealm.loadClass( CONTAINER_CLASSNAME ); MyContainer container = (MyContainer) containerClass.newInstance(); Thread.currentThread().setContextClassLoader( containerRealm.getClassLoader() ); container.run();
Ideally, the container itself would be responsible for creating
ClassRealm for each component that's loaded, and
importing the component contract interfaces into the component's
ClassRealm and using
to gain entry into the sandboxed component realm.