Честно говоря не так часто приходится пользоваться дебаггером и поэтому не очень люблю это дело. Особенно когда начинаешь "плясать" по кругу (если дебажить по "шагам"). Но в описанной ситуации собирался уже воспользоваться дебаггером, если бы ничто другое не помогло. А вот про логирование нужных классов с уровнем TRACE не понял, проясните, пожалуйста, о чем речь.
Я имел ввиду, что большинство библиотек в экосистеме Java используют логирование с помощью какого-нибудь логирующего фреймворка типа log4j. Если задать уровень логирование в максимально подробный, то в логах можно увидеть причину того или иного поведения программы.
Правда, в Вашем случае, похоже, этот прием не помог бы.
Как-то это вообще неправильно, что критичные для старта компоненты подгружаются из интернета.
В том же спринге, например, xml-конфиг ссылается на какие-то внешние ресурсы, но эти xml так же есть внутри jar, и он их берет из jar, а не подтягивает из интернета. Как это сделано, я не разбирался.
Полностью с вами согласен, именно тот факт, что так быть не должно и сподвиг меня перебороть лень и изложить по свежей памяти ход расследования. Т.е. пришел я к этому не совсем оптимальным способом, но сама ситуация удручает.
Обычно сервера держат необходимые схемы в локальных ресурсах, и подгружаться ничего не должно. Просто Вы зачем-то взяли уж очень экзотическую и старую схему для web.xml. Обычно используют что-то вроде этого:
Взял не я, похоже разработчики лифта не особо спешат схему обновлять. А чем чреват способ, который применил я — удаления объявления схемы из XML? После этого нигде ничто не сломалось и даже не ругнулось. Но должны же быть какие-то подводные камни!
Теоретически ничем. Схема — это фишка исключительно парсера, который в случае ее указания, пытается сначала проверить XML на соответствие оной. Если схема не указана, XML парсится без нее как есть. А затем уже сервер готовит контекст, зная заранее структуру.
Затмение на острове Java или внимательней читайте стэктрейсы