Как различать программное обеспечение/пакеты, предоставленные для цели в ACE

У меня есть 2 пакета A и B, используя Apache ACE, я предоставил эти пакеты для цели на следующих шагах.

  1. Подготовлен A (с версией 1.0.0) к цели
  2. Подготовлено B (с версией 1.0.0) к цели
  3. Подготовлено B (с версией 2.0.0) к цели (обновление предыдущей версии, шаг 2)

Когда я получаю доступ (http://localhost:8080/deployment/gatewayid/versions)

Я получаю следующий результат

1.0.0
2.0.0
3.0.0

Как агент управления определит, какая версия какой программы принадлежит?


person Vinod    schedule 30.05.2012    source источник


Ответы (2)


Каждый раз, когда набор сконфигурированных артефактов для цели изменяется, ACE создает новую версию для цели. Чтобы действительно увидеть, что находится в версии, агент управления на цели должен получить версию. Пакет развертывания, который вы затем получите, содержит все необходимые вам метаданные (т. е. список артефактов и их версий).

person Marcel Offermans    schedule 28.06.2012

При работе в той же среде OSGi, что и ваши целевые пакеты, вы можете использовать BundleContext, чтобы перейти к пакетам и запросить их установленные версии. Что-то типа,

for (Bundle b : bundleContext) {
    System.out.println("Found bundle " + b.getSymbolicName() + " in version " + b.getVersion());
}

Если вам также нужно знать, был ли этот пакет установлен из пакета развертывания, вы можете запросить его getLocation(); это будет начинаться с osgi-dp: в соответствии со спецификацией администратора развертывания.

person Angelo van der Sijpt    schedule 31.05.2012
comment
Спасибо за ваш ответ. Мне нужна была эта информация с точки зрения агента управления, поскольку я разрабатываю собственный агент управления. - person Vinod; 31.05.2012
comment
Ах, верно, я этого не понял (не могли бы вы обновить вопрос, чтобы уточнить это?). Что именно вы хотите знать, текущую установленную версию развертывания или версии пакетов? - person Angelo van der Sijpt; 31.05.2012
comment
Обновил вопрос. Я хочу знать имя пакета и его версию, доступную для конкретной цели. - person Vinod; 31.05.2012
comment
Для конкретной цели: вы имеете в виду, что у вас есть код, работающий в цели, которому это нужно, или код, работающий на сервере, которому это нужно? - person Angelo van der Sijpt; 31.05.2012
comment
Спасибо за ваш ответ. Не могли бы вы сообщить мне, каков результат доступа (localhost:8080/deployment/gatewayid/versions) т.е. 1.0.0 2.0.0 3.0.0 означают. Кроме того, у нас нет никакого Rest API, с помощью которого агент управления может узнать, какое программное обеспечение и его соответствующая версия были предоставлены для цели. - person Vinod; 31.05.2012
comment
Это обсуждение становится немного длинным; если вы можете превратить его в четкий вопрос (возможно, показывая некоторый код), вы можете попробовать опубликовать новый вопрос. Если необходимо обсудить это, не стесняйтесь перенести это обсуждение в ace список рассылки пользователей . - person Angelo van der Sijpt; 31.05.2012