Explaining WildFly classloading
There are two approaches to managing dependencies, the first being the Class-Path approach and the second, the Dependencies approach. We will cover both of these topics in this section, but before we do, let's take a look at the history of classloading in WildFly in order to understand why classloading works the way it does. As mandated by the Java EE specification, an application server needs to provide an environment where any deployed application can access any class, or library of classes, of a particular version.
This is also known as Class Namespace Isolation (Java EE 5 specification, section EE.8.4). However, loading classes from different namespaces can raise some issues that are not easy to solve. For example, what happens if you pack a newer version of a utility library with your application, while an older version of the same library was loaded by the application server? Or, how do you simultaneously use two different versions of the same utility...