Интересует вот что.
Есть программа серверного типа, на Java. Работает себе потихонечку, ждет соединений по сокету. После соединения - обрабатывает это самое соединение (принимает запрос, отсылает ответ).
Но вот в какой то момент времени, скажем в 12-00, захотелось человеку подправить кусочек кода (маааленький такой), относящийся к обработке соединения. Что из этого получается. Новые классы естественно компилируются, НО. Программа то работает дальше, и пока ее не перезапустить, изменения в силу не вступят. А хочется сделать так, чтобы серверную прогу перезапускать не приходилось, т.е. скопировал новые классы, сделал еще что то (вопрос что - открытый), и оПа - все работае с новыми классами.
Динамическая загрузка (перезагрузка?) классов
Модератор: Absurd
mm, Classloader не подойдёт?
Даже самый дурацкий замысел можно воплотить мастерски
Class.forName что ли?
mm, да нет, java.lang.ClassLoader.
Даже самый дурацкий замысел можно воплотить мастерски
Что-то в документации мутно написано...
нифига не понятно.
Если я делаю
ClassLoader.loadClass(className);
то:
1) если этот класс уже загружался, то ничего не происходит
2) иначе ищется класс с таким именем и загружается?
Это верно?
нифига не понятно.
Если я делаю
ClassLoader.loadClass(className);
то:
1) если этот класс уже загружался, то ничего не происходит
2) иначе ищется класс с таким именем и загружается?
Это верно?
Надо бы тебе переопределить ClassLoader - написать свой, который следил бы отдельной ниткой за изменениями классов, и в нужный момент этот класс перегружал бы... Но перегрузка связана со многими проблемами, основная из которых - следить за уже загруженными объектами данного класса.mm писал(а):...
и оПа - все работает с новыми классами.
некоторые мысли по этому поводу...
и еще одна ссылка (скачать исходники можно с sourceforge.net)
Спасибо за ссылки. Насколько я понял, это непросто.
Буду разбираться.
Буду разбираться.
Еще я тут подумал. Вот написал я свой ClassLoader который каким то образом перезагружает нужные классы.
А потом мне захотелось перезагрузить ClassLoader )))). Причем никто это делать не запрещает, то есть такое тоже можно провернуть...
Я офигеваю от Java...
А потом мне захотелось перезагрузить ClassLoader )))). Причем никто это делать не запрещает, то есть такое тоже можно провернуть...
Я офигеваю от Java...