Гибкость исполнения OSGi - PullRequest
0 голосов
/ 30 апреля 2018

Чтобы начать работать с OSGi, подумал о том, чтобы спросить об этом, потому что это стало неясным для меня. Если у вас есть требование изменения кода во время выполнения, OSGi, вероятно, является единственным возможным способом добиться этого с помощью Java. от https://mondula.com/2016/01/11/osgi-benefits-and-drawbacks/

Как технически поддерживается гибкость времени выполнения в OSGi?

1 Ответ

0 голосов
/ 01 мая 2018

Это большой вопрос, на который было бы нецелесообразно полностью отвечать здесь. Ниже приведен упрощенный обзор.

OSGi выделяет Java ClassLoader для каждого разрешенного пакета. Когда пакет обновляется, OSGi сначала отправляет сигнал остановки в пакет, позволяя ему освободить ресурсы и подготовиться к сборке мусора.

Новый пакет затем повторно разрешается в соответствии с его требованиями, которые могут измениться по сравнению с предыдущей версией. Предполагая, что новая версия все еще разрешается (т.е. ее требования все еще удовлетворяются), тогда OSGi выделяет новый ClassLoader, использует его для загрузки классов в пакете, и если пакет имеет активатор и находился в состоянии ACTIVE до обновления , отправляет сигнал запуска на вновь загруженный активатор.

...