|
|
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Не совсем понимаю механизм, который помогает osgi подгружать модули динамически. То, что я понимаю: -У нас на каждый модуль свой classloader - Класслоадер загружает .class файлы в jvm Целостной картины почему без OSGI нельзя, а с ним можно у меня нет. Проясните пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 18:49 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerЦелостной картины почему без OSGI нельзя, а с ним можно у меня нет. Можно без OSGi. Можно самому на Classloader-ах написать. Можно взять Java Plug-in Framework. Был JSR какой-то, который вызвал серьезное недоумение OSGi. Для него тоже, возможно, что-то написано. JEE сервера всё время работали и про OSGi ничего не знали. Это только последние годы некоторые из них перешли на OSGi. Другое дело, что существует масса нюансов во взаимодействии, версионности и пр. Которые в OSGi спецификации, вроде как, решены. А в своём велосипеде их придется и решать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 20:25 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а в чём так сказать самая фишка то? За счёт чего это достигается? Как "самому на Classloader-ах написать"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 21:34 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ещё предпосылка появилась. Как я понял мы не можем насильно cделать unload класса. Но пазл всё равно ещё не сложился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 22:50 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerКак "самому на Classloader-ах написать"? Экземпляры классов и Classloader-ов это объекты в куче памяти. Как только они перестают быть нужны, GC имеет право их собрать, и тем самым выгрузить из JVM. Важно только чтобы экземпляры этих классов не утекали в глобальные реестры. Если хотя бы один класс, загруженный именно этим загрузчиком, без делегирования, не доступен для GC, то сам Classloader так же не доступен для GC как и все остальные классы им загруженные. Например традиционная утечка в web приложении с велосипедным пулом, это регистрация JDBC драйвера в DriverManager. Которая не даёт возможность освободить весь .WAR модуль, загруженный выделенным Classloader-ом. В этом случае после редеплоя памяти не освобождается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 23:13 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerКак я понял мы не можем насильно cделать unload класса. Ну, не то чтобы совсем не можем. В Hotspot Java 6 появился ключ, который через System.gc() позволяет форсировать сборку мусора в PermGen Space. Таким образом, если классы нигде не утекли, можно "cделать unload". Не помню остался ли этот ключ в Java 7 и Java 8, особенно в связи с отказом от PermGen. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 23:16 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Blazkowiczбез делегирования не понял что это значит в вашем контексте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 23:20 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, мне не нагуглить пример самописного велосипедного hot deploy. По идее ведь и сервер не обязательно. Можно например написать 2 потока один пишет какую-то строку в вечном цикле... второй сначала ждёт, потом подменяет .class файл класса потока. Это возможно на коленке написать или требует серьезных по меркам форума трудозатрат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 23:24 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну и соответственно после подмены class файла выводиться будет новая строка.... ну или ещё какие варианты предложите попроще да понагляднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 23:26 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Однажды я делал несложный сервлет и, соответственно, менял его реализацию. После этого в новые классы копировались в WEB-INF/lib/classes (с сохранением структуры каталогов) и обновлялся тайм-штамп дескриптора контекста или web.xml при автоматическом развёртывании. Остальное делал сервлет-контейнер (Tomcat). Понятно, что это не хот-патч, но вполне себе оперативное развёртывание. В случае war-файлов контейнеры позволяют использовать их распакованный вариант. Это, конечно, не по стандарту, но, вроде как, общепринятая фича, которая сильно ускоряет обновление и перезапуск приложения. Это я всё к тому, что, может быть, проще надо быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 00:11 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, на самом деле просто интересно докапаться до истины как эта штука работает, в чем основная идея. А то получается, что нефига и не понимаю.. Ну кстати похожий случай....ведь по стандарту если мы меняем jsp, то контейнер на лету должен отразить наши изменения, а jsp ведь это сервлет, то есть есть class файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 00:42 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerведь по стандарту если мы меняем jsp, то контейнер на лету должен отразить наши изменения, а jsp ведь это сервлет, то есть есть class файл.Не совсем. Если говорить о tomcat, то сервлет-контейнер проверяет изменения jsp-файлов тогда и только тогда, когда находится в режиме разработки (по умолчанию). Но эту фичу можно выключить в web.xml и тогда, после первого обращения, перекомпиляции происходить не будет. Все скомпилированные классы находятся в отдельном временном каталоге. Если в каталоге появилась новая реализация, а старый класс был выгружен сборщиком мусора - новый вариант загрузится автоматически, когда вновь потребуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 00:55 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, ну вообще хотелось бы апрув, ибо я слышал другую версию, но в целом это доказывает, что hot deploy иногда ближе чем кажется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 01:06 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerну вообще хотелось бы апрувЧего? Того, что jsp-компиляются в временный каталог? Достаточно один раз туда заглянуть. Или моих измышлений на тему когда происходит загрузка? Так, вроде, везде указано, что JVM грузит классы по запросу, а не при старте. Нет запроса - нет и загрузки. Ну а сами запросы могут быть из разных неожиданных мест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 01:10 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Basil A. Sidorovизмышлений на тему когда происходит загрузка Basil A. Sidorov Если говорить о tomcat , то сервлет-контейнер проверяет изменения jsp-файлов тогда и только тогда, когда находится в режиме разработки (по умолчанию). Впротивовес я слышал, что это часть спецификации(хз какой именно если честно). Кулаком в грудь себя бить не стану, что я уверен, что это правда, но раз вопрос встал, то хочется каких-то серьезных доказательств. Но и про основную тему - написать простейший hot deployer прошу остальных людей читающих эту тему не забывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 01:15 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerно раз вопрос встал, то хочется каких-то серьезных доказательствВсё, о чём я написал подробно прокоменнтировано в web.xml этого самого tomcat. Доступно для изучения, проверки и всё такое прочее.Но и про основную тему - написать простейший hot deployer прошу остальных людей читающих эту тему не забывать.Самый простой вариант - ничего не делать. Нет, как правило, такой задачи - "оперативная замена". Есть, как правило, задача "минимизировать даун-тайм при обновлении приложения". Простейший вариант - работать с распакованным war. В том же tomcat, в актуальной седьмой версии, реализован механизм параллельного развёртывания. Если две версии одного приложения не конфликтуют между собой, то они могут быть развёрнуты параллельно. При этом контейнер будет направлять все "новые" запросы на новую версию, а после того, как отработают все "старые" запросы - "свернёт" старую версию, после чего её можно будет спокойно удалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 01:42 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerне понял что это значит в вашем контексте Мы же обсуждали уже в предыдущей теме, что по-умолчанию загрузчики делегируют загрузку родительским загрузчика. Соответсвенно сами, в этом случае, класс не загружает. Это делает "родитель". Тогда и класс этот связан с "родителем", а не текущим загрузчиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 09:14 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerмне не нагуглить пример самописного велосипедного hot deploy. https://www.google.com/search?q=classloader plugin http://www.javaranch.com/journal/200607/Plugins.html и другие Тот же JPF скачайте, посмотрите исходный код. Вот ещё пара ссылок. Не совсем то, но для старта подходит. http://www.javalobby.org/java/forums/t18345.html http://javabender.blogspot.com/2012/07/hot-deploy-example.html questionerЭто возможно на коленке написать или требует серьезных по меркам форума трудозатрат? С нуля писать влом. Напишите прототип. Если не заработает, посмотрю, подскажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 09:19 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
questionerВпротивовес я слышал, что это часть спецификации(хз какой именно если честно). JSP/Servlet спецификация требует возможности обновлять JSP не лету. Но она никак не ограничивает способ, которым это реализовано. Хоть интерпретацией. questionerКулаком в грудь себя бить не стану, что я уверен, что это правда, но раз вопрос встал, то хочется каких-то серьезных доказательств. За тебя спецификации нагуглить и поиском в них поискать ключевые слова? questionerНо и про основную тему - написать простейший hot deployer прошу остальных людей читающих эту тему не забывать. Простейший hot deployer выглядит так. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 09:24 |
|
||
|
osgi. hot deploy и classloading. Как это связано ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, авторМы же обсуждали уже в предыдущей теме, что по-умолчанию загрузчики делегируют загрузку родительским загрузчика. Соответсвенно сами, в этом случае, класс не загружает. Это делает "родитель". Тогда и класс этот связан с "родителем", а не текущим загрузчиком. Да, вспомнил. Просто одно с другим что-то не соотнёс. Так как это задача такая слегка "факультативная", я пока ее немного отложу всвязи с нехваткой времени, но как будут какие-нить результаты обязательно вернусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2014, 10:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38633934&tid=2127222]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 563ms |

| 0 / 0 |
