Существует множество решений, ни одно из которых не является особо чистым или простым.
Как уже говорилось, изменение web.xml приведет к перезагрузке контекста и, следовательно, к обновлению исходного кода, и это можно сделать без перезапуска сервера. Это работает, потому что «WEB-INF / web.xml» настроен как WatchedResource в файле TOMCAT / conf / Context.xml. То есть каждый контекст наследует этот параметр и автоматически просматривает этот файл. Вы можете удалить это поведение, но вы также можете предоставить значения WatchedResource в своем собственном web.xml для просмотра дополнительных файлов. Хотя я не рекомендую это сделать, вы можете добавить в него все свои файлы классов, и контекст будет перезагружен при изменении одного файла.
Лучшее решение основано на том факте, что класс может быть перезагружен при сбросе ClassLoader, который загрузил класс. Поэтому, если вы управляете своим кодом горячей замены в своем собственном ClassLoader, вы можете обновить свой код, не перезапуская контекст, если вы обновите ClassLoader. К сожалению, легче сказать, чем сделать, но это может помочь вам начать.