powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем нужна иерархичность загузчиков классов?
18 сообщений из 43, страница 2 из 2
Зачем нужна иерархичность загузчиков классов?
    #39385656
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerобщающиеся через rest или просто сидящие на одной базе
Ну, это как два разрабочика, которые сидят за соседними столами, но общаются исключительно по email.
Если они пересекаются раз в месяц - это нормально. А если плотно работают над общей задачей и общим кодом, то наверное такое общение может стать и узким местом.

Тогда мы можем этих двух программистов посадить за один стол (задеплоить в один Tomcat), но что нам это даст?

Как два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга?
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385689
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerКак два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга?
Как из одного метода можно вызвать другой метод внутри одной JVM?
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385728
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerКак два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга?
Как из одного метода можно вызвать другой метод внутри одной JVM?
Да, но из разных приложений
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385739
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединяюсь к вопросу questioner.

Было нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная (((
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385799
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385837
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБыло нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная (((
Так как ClassCastException не является "нормальной" ситуацией, то чего мы вдруг в этой теме озадачились "нормальным" способом передачи ссылки? В EJB есть локальные интерфейсы, которые являются то о чем я писал выше - оптимизацией вызовов между модулями. Через JNDI, я подозреваю, тоже можно получить ссылку на элементы другого модуля при особом желании. На сервлетах - не скажу. А вот EJB сплошь и рядом себя публикуют в JNDI.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385853
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevПрисоединяюсь к вопросу questioner.

Было нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная (((

Как-то так: получаем другой контекст и у него из атрибутов берем объект. В Томкате надо в настройках контекста сказать crossContext="true", иначе ServletContext.getContext() будет всегда возвращать null.

Код: java
1.
2.
ServletContext anotherCtx = ServletContext.getContext("/another");
Something obj = (Something)anotherCtx.getAttribute("another.context.object");
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39385861
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДа, но из разных приложений
Для операционки одно - jvm. А вот внутри нее класслоадеры разные. Собственно и создается впечатление, что это разные приложения.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386324
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВ java классы загружают в память класслоадеры.
Этих класслоадеров по умолчанию 3. Можно добавлять и свои.

Я не очень понял а зачем это всё нужно то?

почему не сделать просто один лоадер, который всё грузит, все классы всегда видны, никаких проблем, солнышко светит, небо голубое.
Я думаю что так и было когда-то. Сама по себе необходимость вводить новый уровень
абстракции над packages появилась тогда, когда в браузер нужно было грузить апплеты.
У которых априори не было никаких конвенций по именам. Вот здесь CL стал единственным
и верным выходом.

А иерархия? Ну .. она обычно возникает там где есть необходимость управления по цепочке.
От верхнего к нижнему. Безопасность там. Политики и все такое.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386656
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, вообще, IMHO вопрос из разряда зачем топору обух. Одни ответят, чтоб на топорище держался, другие чтоб гвоздь забить можно было при случае. И все правы.
В Java все пытаются сделать через классы. В том числе сделали и класслоадер. Класслоадер должен загружать любой класс. Так получилось, что и другой класслоадер. Вот и получилось.
С одной стороны конструкция такая, с другой стороны можно и использовать. :)
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386815
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую сам объяснить) Свои класслоадеры нужны для:
- загрузки классов из нестандартных источников: динамический classpath, сеть, шифрованные джарники и т.п.
- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом
- изоляции библиотек и приложений - если нужно загрузить в одну JVM две версии одной и той же библиотеки, без разных класслоадеров не обойтись
- выгрузки загруженных классов - т.к. класслоадер держит ссылку на экземпляр класса, класс можно выгрузить только вместе с его класслоадером
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386834
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf- загрузки классов из нестандартных источников: динамический classpath, сеть, шифрованные джарники и т.п.

Да, но при этом можно эту проблему решить через URLClassLoader и свой провайдер для URL через SPI для своего протокола.

scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом

Ну, во-первых не "в базовом". Чтобы не было казусов, нужно чтобы старый и новый загрузчики жили в разных ветках иерархии.
Во-вторых это не "рекомпиляция", а замена на лету.
В-третьих если этот процесс нужен в разработке, то JRebel-у нет равных. А если в продакшне, то ещё попробуй напиши такой код, чтобы утечек в Metaspace не было.

scf- изоляции библиотек и приложений - если нужно загрузить в одну JVM две версии одной и той же библиотеки, без разных класслоадеров не обойтись

Вот это верно.

scf- выгрузки загруженных классов - т.к. класслоадер держит ссылку на экземпляр класса, класс можно выгрузить только вместе с его класслоадером
А это сложно назвать причиной для которой "свои класслоадеры нужны". Это просто уже нюанс в реализации.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386839
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scf,

scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом

Этот пункт не понятен.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386851
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerscf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом
Этот пункт не понятен.
Смотри Tomcat Parallel Deployment
Тебе нужно обновить приложение. Но у тебя куча клиентов пользуются единственным сервером и выкидывать ты их не хочешь.
Ты деплоишь новую версию war модуля в Tomcat. Она работает в отдельном ClassLoader-е. Все новые сессии Томкат создаёт на новом модуле. Ждешь пока старые сессии заэкспайрятся или разлогинятся, и можешь смело удалять старую версию.

В результате ты на горячую заменил своё приложение.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386854
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerscf,

scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом

Этот пункт не понятен.
Ну типа приходит к тебе json, на основании которого ты генеришь новый класс. Но не хочешь, чтоб этот новый класс случайно подменил что-то в том, что у тебя и так есть, исли в запросе предложат то же имя, что у тебя итак есть.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386864
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВо-вторых это не "рекомпиляция", а замена на лету.+1

Hot Swap
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386883
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

да, "горячая замена" лучше подходит. Самодельная реализация бывает нужна, когда нужно отправлять приложению уведомления о том, что загружена новая версия. К примеру, автоматически обновлять страницу веб-приложения.
...
Рейтинг: 0 / 0
Зачем нужна иерархичность загузчиков классов?
    #39386886
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanHot Swap
Я не использую термин hot swap потому что под ним, в Java, подразумевается исключительно замена тела метода через JPDA.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем нужна иерархичность загузчиков классов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]