Tomcat сначала не ищет родительский загрузчик классов. На самом деле это происходит наоборот: сначала он просматривает веб-приложение, а затем переходит к родительскому загрузчику классов (это «lib» для Tomcat 6/7 и «shared» для Tomcat 5.5). Исключением из этого правила являются системные классы (я думаю, что все, что имеет пакет java. * И javax. *), Эти классы просматривались только в системном загрузчике классов. Я считаю, что причина, по которой они это делают, - причина № 1, которую вы указали.
Так что, в принципе, можно реализовать стратегию «сначала родитель». Это также нормально для реализации parent-last. Обе стратегии имеют свои плюсы и минусы.
Я приведу еще одну причину, по которой нужно реализовать родительский план: вы уменьшаете количество классов, загружаемых в пермскую память. Представьте, что у вас есть несколько веб-приложений, использующих одну и ту же библиотеку. С parent-first библиотека может быть загружена один раз. С parent-last он будет загружен несколько раз.
Тем не менее, для parent-first все веб-приложения должны будут использовать одну и ту же версию библиотеки, а для parent-last они могут использовать разные версии.