2016-02-03 5 views
2

Я хочу динамически обновлять пакет в OSGi framework. Здесь я хочу сохранить состояние компонента. Я знаю, что команда обновления в OSGi игнорирует сохранение состояния компонента.Как динамически обновлять пакет OSGi?

Я хочу найти основу обновления OSGi как DSUF: http://dl.acm.org/citation.cfm?id=2127719

С уважением.

+0

Вы имеете в виду «поддерживая состояние»? Если вы хотите сохранить содержимое карты, которая была вызвана пакетом, это невозможно. –

+0

Да, содержимое (или значение) переменной в текущем пакете, который я хочу сохранить в новом. Это, возможно, глобальная переменная. – HNT

ответ

3

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

Компонент может сохранять состояние во время дезактивации, которое может быть восстановлено во время повторной активации, но это должно быть частью реализации компонента.

+0

Не могли бы вы рассказать мне подробнее, как сохранить состояние? Если возможно, пожалуйста, дайте мне знать структуру, более известную для поддержания состояния при обновлении пакета OSGi? – HNT

+0

Только ваш компонент знает, что является его «состоянием». Таким образом, только ваш компонент знает, что сохранить как состояние во время обновления пакета. –

0

Самый простой способ, который я вижу, - сохранить и восстановить контекст самостоятельно, с помощью постоянного механизма (jdbc, записи файлов, jms, ...).

+0

Здесь не просто сохранить и восстановить контекст. Возможно, есть данные в потоке, который выполняет, например, запросы связи. См. Https://en.wikipedia.org/wiki/Dynamic_software_updating. Я хочу найти структуру, такую ​​как Pymoult, но для OSGi – HNT

Смежные вопросы