Hemos realizado en el post anterior una introducción a como funcionan los Classloaders . Sin embargo hay una excepción al funcionamiento de ellos .Esa excepción viene definida a nivel de standard y afecta los Web ClassLoaders . Estos cargadores de clases son los encargados de cargar clases a nivel de una aplicación web y no se comportan de la forma habitual sino que en vez de delegar en los ClassLoaders padre cargan directamente las clases que necesitan de la carpeta lib de nuestra aplicación.
Este hecho es importante porque permite a los desarrolladores tener prioridad a la hora de decidir que librerias se cargan sobre los administradores del servidor Java EE. En la imagen se muestran dos cargadores de clases que tiene Tomcat, el CommonsClassLoader que funciona de forma normal y el WebClassLoader que funciona al revés y carga primero lo que exista en la carpeta lib de cada aplicación web. Cada aplicación web dispone de su propio ClassLoader.
Al tener varios WebClassLoaders las librerias se cargarán varias veces en el servidor consumiendo mas memoria. Siempre que nos sea posible es mejor opción ubicar las librerias comunes a nivel de un ClassLoader que varias aplicaciones compartan. Sin embargo esto no siempre se puede hacer ya que hay aplicaciones que pueden compartir los mismos frameworks pero en versiones distintas.