Зачем нам нужен пользовательский загрузчик классов в Java - PullRequest
7 голосов
/ 23 августа 2010

почему у Tomcat есть собственный загрузчик классов. В чем преимущество наличия пользовательского загрузчика классов

Ответы [ 3 ]

12 голосов
/ 23 августа 2010

Он изолирует различные веб-приложения, развернутые в контейнере;то есть поведение веб-приложения не будет зависеть от (не) развертывания другого веб-приложения.

Каждое веб-приложение видит только свои собственные классы, а не классы, предоставленные другими приложениями.Это позволяет различным веб-приложениям использовать разные версии одного и того же класса.Развертывание нескольких веб-приложений было бы кошмаром без такой изоляции.

Аналогично, пакеты OSGI получают свои собственные загрузчики классов, поэтому разные пакеты могут использовать разные версии одного и того же плагина.Опять же, эта изоляция снижает вероятность того, что добавление плагина (с его зависимыми библиотеками) повлияет на другие плагины в системе.

8 голосов
/ 23 августа 2010

Tomcat (и другие контейнеры приложений) должны иметь возможность обрабатывать загрузочные классы из файлов WAR и т. Д. Как бы вы могли сделать это без использования пользовательских загрузчиков классов?

РЕДАКТИРОВАТЬ: В основном вам нужны определенные пользователем загрузчики классов, если вам нужно загружать классы или ресурсы «необычными» способами ... например, из файла EAR или WAR. В качестве другого примера вы можете загрузить классы из базы данных или из какого-либо безопасного хранилища.

3 голосов
/ 23 августа 2010

Однажды я работал в системе, в которой был загрузчик классов, который загружал классы из распределенной БД. Таким образом, вы могли бы изменить свой код, скомпилировать его и сделать так, чтобы компилятор выгружал его в БД, тогда любой, кто перезапустил их систему, немедленно загрузил бы его (это было для клиентов в распределенной системе клиент / сервер, где администраторы могли создать свой собственный экран). модули на лету и выталкивают их клиентам).

Кстати, у этого были проблемы, отличная теория, но я не могу это рекомендовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...