[ https://issues.apache.org/jira/browse/GEODE-8705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17491783#comment-17491783 ]
Udo Kohlmeyer commented on GEODE-8705: -------------------------------------- The new ClassLoader isolation will be accomplished by using JBoss Modules. In order to make sure that the modular environment is correctly bootstrapped, it needs to be the first thing that is bootstrapped. To achieve this, the current approach to start the system, with all library dependencies declared on the root Classloader, will be replaced with the newer approach, which only has the jboss-modules library and a library which provides a custom ModuleLoader (a JBoss Modules construct) as the Boot Module loader for JBoss Modules. The new bootstrapping mechanism will also require a module.xml file to bootstrap the modules. In the current implementation there is one module.xml file that describes all the libraries, main class (entry class) and import/export restrictions of classes/packages. In order to avoid significant changes, the current approach (even if bootstrapped through org.jboss.modules.Main) takes the same command line parameters that one would pass to the Locator/Server Launcher. The Main class from JBoss modules just acts as a pass through and passes through all parameters to the main classes defined in the module.xml file. (in this case ServerLauncher). There is a current project structure for deployment: * geode-deployment-acceptence (Acceptence tests to ensure that no functionality is broken between the two classloader mechanisms) * geode-deployment-jboss-modules - JBoss modules classloader implementation * geode-deployment-chained-classloader - Previous classloader implementation * geode-deployment-test - Test project to create a Spring project that uses conflicting libraries to main project * geode-jboss-extensions - Project to provide extensions to the JBoss Modules framework, that needs to be on the root Classloader. In order to minimize the module.xml maintenance, a Gradle Plugin has been written to generate the module.xml file from the gradle dependencies. > Using JBoss Modules to implement classloader isolated jar deployment > -------------------------------------------------------------------- > > Key: GEODE-8705 > URL: https://issues.apache.org/jira/browse/GEODE-8705 > Project: Geode > Issue Type: New Feature > Reporter: Udo Kohlmeyer > Assignee: Udo Kohlmeyer > Priority: Major > Labels: pull-request-available > > Introduce Classloader isolation into Geode, to avoid the potential conflict > of custom code dependencies, from deploy jar, and the dependencies of the > Geode system. > This problem because evident when Geode was still dependent on Spring > framework 4.3 and users wanted to deploy custom jars that used Spring > framework 5. This caused many library version conflicts. > This problem is not limited to the usage of Spring in the system but to ANY > dependent library that Geode and any potential custom jar would use. > The end goal is to have a system that is Classloader isolated and allows for > the usage of libraries of different versions within the Geode without any > conflicts. -- This message was sent by Atlassian Jira (v8.20.1#820001)