#osgi
#osgi
Вопрос:
Когда я использую update
command в OSGi, фреймворк (Equinox) использует файл в папке обновления для обновления пакета. Неважно, имеет ли пакет в местоположении более высокую версию или нет. например, фреймворк обновил версию 1.2.0 с 1.0.0.
есть ли способ ограничить версию файла, который будет использоваться в качестве обновленного файла? Я имею в виду что-то вроде того, что мы можем сделать в пакетах импорта.
Ответ №1:
Нет, фреймворк не будет выполнять такую проверку за вас. Если вы не хотите обновлять пакет из этого местоположения, просто не звоните update
.
Обратите внимание, что можно обновить пакет из другого места, из которого он был первоначально установлен, используя версию update
метода, который принимает InputStream
, например:
File newLocation = new File("...");
bundle.update(new FileInputStream(newLocation));
Комментарии:
1. Итак, что я должен сделать, чтобы иметь такую проверку? Должен ли я разработать свою собственную оболочку или что-то в этом роде? Моя основная цель — уменьшить передачу данных.
2. Вам не нужно разрабатывать собственную оболочку. Большинство оболочек OSGi (включая Equinox) расширяются с помощью новых команд, поэтому вы можете просто разработать свою собственную команду «updateIfLater».
3. Как я могу получить версию пакета перед его установкой? есть ли какой-нибудь способ?
4. Прочитайте манифест внутри JAR с помощью
java.util.jar.JarFile
.