Single WAR uses the special class loader for core and web modules. It loads classes only from core jars (like app-core.jar, cuba-core.jar) for a core module and web jars for a web module. Libraries (like optaplanner) is loaded by a standard web container class loader.
For some specific class loaders, (like OptaPlanner -> Drools classloaders) possible case exists when one class is loaded by different class loaders: core class loader and standard web container class loader. And OptaPlanner doesn't check rules correctly if one class loaded by different class loaders. e.g. a rule that checks class on equality.
There is only one way: optaPlanner library should be loaded using core class loader.
We'll introduce properties coreAdditionalJarNames and webAdditionalJarNames on CubaWarBuilding. You can define jar names that loaded by core or web class loader.
Environment
Description of the bug or enhancement
Single WAR uses the special class loader for
core
andweb
modules. It loads classes only from core jars (likeapp-core.jar
,cuba-core.jar
) for acore
module and web jars for aweb
module. Libraries (likeoptaplanner
) is loaded by a standard web container class loader.For some specific class loaders, (like OptaPlanner -> Drools classloaders) possible case exists when one class is loaded by different class loaders:
core
class loader and standard web container class loader. And OptaPlanner doesn't check rules correctly if one class loaded by different class loaders. e.g. a rule that checks class on equality.There is only one way: optaPlanner library should be loaded using
core
class loader.We'll introduce properties
coreAdditionalJarNames
andwebAdditionalJarNames
onCubaWarBuilding
. You can define jar names that loaded bycore
orweb
class loader.Example: