Есть ли возможность ограничить версию пакета при обновлении?

#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 .