Контейнеры сервлетов обычно используют стратегию одного загрузчика классов для веб-приложения, чтобы избежать этого ада.Таким образом, если у вас есть два приложения, развернутые в одном и том же контейнере, они будут иметь разные загрузчики классов, которые удовлетворяют их требованиям к разрешению классов и загрузке. У Tomcat есть документ для этого .
Конечно, есть некоторые ошибки, такие как работа с драйверами JDBC (по одному на каждый процесс JVM) и JNI (данная библиотека не может быть загруженаболее чем один раз определенной JVM или чем-то в этом роде), но общая работа остается той же.