Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
bordertrue
diagramNameJBoss Deploy Jar
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth1061
revision34


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   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
macroId47113394-4357-4196-b05e-18686ebe5381
nameClassDiagram - ModuleService
pagePin2

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.

...