Изменение Манифеста Связки во время выполнения - PullRequest
1 голос
/ 11 сентября 2011

Возможно ли (и если да, безопасно) изменить МАНИФЕСТ пакета в любое время в течение его жизненного цикла (то есть, предположительно, только между УСТАНОВЛЕННЫМ и РАЗРЕШЕННЫМ).

Я полагаю, что другим способом задать вопрос будет,

После УСТАНОВЛЕНО, но до РАЗРЕШЕНО, МАНИФЕСТ уже полностью оценен (т. Е. Дальнейшие изменения будут игнорироваться), что делает его слишком поздно для изменения?

Если все вышеперечисленное кажется абсурдным ..тогда мой следующий вопрос: кто-нибудь думает, что можно (без неприятных взломов фреймворка) обернуть разрешение MANIFEST (т. е. шаг загрузчика классов, чтобы получить META-INF / MANIFEST.MF из пакета) с пользовательским значением.

Справочная информация: Рассмотрим существующую модульную инфраструктуру, не основанную на OSGi, для которой я хотел бы упростить переход к OSGi, предлагая возможность развертывания тона существующих «плагинов».без изменений и во время выполнения выполните анализ («плагины» четко определены, поэтому отображение не должно быть трудным), котороепреобразует их в настоящие OSGi-пакеты, используя операции времени выполнения BND для генерации MANIFEST, который будет использоваться вместо потенциально несуществующего или не-OSGI-пакета MANIFEST.

Надеюсь, это имеет смысл (@njbartlett!)

Ответы [ 2 ]

4 голосов
/ 11 сентября 2011

Почему бы не определить схему URL, которая изменяет манифест как часть процесса установки / обновления?Когда инфраструктура получает доступ к комплекту через URLConnection, вы можете вернуть мутировавший комплект с мутированным манифестом.Это в основном то, что делает поддержка веб-пакетов, и это должно работать и для вас.

1 голос
/ 11 сентября 2011

Нет, ты не можешь сделать это.Весь файл JAR (и, следовательно, файл MANIFEST.MF) читается во время операции установки.Чтобы что-то изменить в этом JAR-файле, вам придется либо обновить пакет, либо удалить и снова установить.

Что касается того, что вы действительно хотите сделать, почему вы не можете просто выполнить анализ и преобразование с помощью bnd до установка JAR как пакета?

...