Не только некоторые контейнеры JSP также поддерживают перезагрузку класса сервлета , если он модифицирован.
Это зависит от контейнера, чтобы решить, когда загружать сервлеты. A servlet can be loaded at runtime on demand
. И приходя в JSP, JSP translated to servlet can also be loaded at runtime
.
Подойдя к вашему вопросу,
Почему Tomcat не требует перезапуска?
Это потому, что Tomcat is capable of adding/modifying classpath to Web Application classloader at runtime
. Tomcat будет иметь их custom Classloader implementation which allows them to add the classpaths at runtime
.
Как может работать пользовательский загрузчик классов?
Один из способов добиться этого - модифицировать сервлет / JSP, a new classloader is created for the Servlet/JSP with Application classloader as parent classloader . And the new classloader will load the modified class again
.