Изменение манифеста пакета во время выполнения

StackOverflow https://stackoverflow.com/questions/7379840

  •  28-10-2019
  •  | 
  •  

Вопрос

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

Думаю, еще один способ задать вопрос:

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

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

Предыстория. Рассмотрим существующую модульную структуру, не основанную на OSGi, для которой я бы хотел упростить переход на OSGi, предлагая возможность развертывания тональности существующих «плагинов» без изменений и во время выполнения выполнить анализ («плагины» хорошо определены, поэтому сопоставление не должно быть сложным), который преобразует их в настоящие пакеты OSGi, используя операции выполнения BND для создания МАНИФЕСТА, который будет использоваться вместо потенциально несуществующий или не относящийся к osgi-bundle МАНИФЕСТ.

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top