...
The initial bootstrapping implementation is "simple". The implementation will bootstrap the Apache Geode system using the current bootstrapping mechanism of `LocatorLauncher` or `ServerLauncher`There will be a new ServerLauncher process that will know how to bootstrap Apache Geode system.
There will be two bootstrapping options:
- Using the current class loading mechanism
- Using the new JBoss module loading system to achieve class loading isolation
The determination of the bootstrapping type will be done in GFSH using an "--experimentalClassloader" flag. This flag will instruct GFSH to either use the current class loading mechanism or use the class loading isolated ServerLauncher.
The Bootstrap module will use the ModuleService to load modules/components or load service implementations using the standard ServiceLoader functionality. Other than the bootstrapping change the "normal" behavior of the system should not change.. There are currently two ModuleService implementations:
- JBossModuleService (using JBossModules for ClassLoading and Service lookups)
- ServiceLoaderModuleService (using the current Java ClassLoading and Service lookup mechanics)
The biggest change that will be visible will be when opting into using the JBoss Modules class loading. The initial targeted implementation would be the `gfsh deploy jar' .
...
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
The deploy jar function initiated by running `deploy jar` from gfsh will trigger the ManagementService to register the module with the ModuleService using the uploaded JAR-file. This is done by the jar file being placed in a known location on disk, then the ManagementService will request the BootstrappingService to load the component, in this case the component would be a CustomDeployedJar component type. The BootstrappingService will determine the location of the jar file and request from the ModuleService that the module is loaded using the jar file location.
...
Changes and Additions to Public Interfaces
unloadModule(moduleName:String): boolean – Unloads the registered module Gliffy Diagram macroId 47113394-4357-4196-b05e-18686ebe5381 name ClassDiagram - ModuleService pagePin 2
registerModule(moduleMeta:ModuleMeta):boolean – Registers a module given the ModuleMeta data object.
loadService(clazz: Class<T>): T – Load all services of type Class<T> . This functionality is equivalent to the ServiceLoader semantics currently present in Java
6
Performance Impact
No anticipated performance impact.
...