Изменить уровень пакета в felix?

Я знаю, как установить начальный уровень пакета, чтобы просто развернуть пакет:

bundlelevel -i 5

Но как изменить уровень существующего пакета? Справка для уровня пакета говорит:

  bundlelevel - set bundle start level or initial bundle start level
   scope: felix
   flags:
      -i, --setinitial   set the initial bundle start level
      -s, --setlevel   set the bundle's start level
   parameters:
      int   target level
      Bundle[]   target identifiers

bundlelevel - query bundle start level
   scope: felix
   parameters:
      Bundle   bundle to query

Я понятия не имею, что такое аргумент "Bundle []". Я пробовал только bundle_id и [bundle_id] и даже имя пакета.

Позвольте мне показать пример. Допустим, я хочу изменить уровень пакета 5 (api книжной полки) с 1 на 2.

g! lb
START LEVEL 5
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (3.0.7)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.2)
    2|Active     |    1|Apache Felix Gogo Command (0.6.1)
    3|Active     |    1|Apache Felix Gogo Runtime (0.6.1)
    4|Active     |    1|Apache Felix Gogo Shell (0.6.1)
    5|Active     |    1|Bookshelf Inventory API (1.5.0)

Я пробовал следующее:

g! bundlelevel -s 2 [5]
gogo: IllegalArgumentException: Cannot coerce 
    bundlelevel(String, String, ArrayList) to any of 
    [(boolean, boolean, int, Bundle[]), (Bundle)] 

g! bundlelevel -s 2 5
Must specify target bundles.

Любая помощь приветствуется.


person Andriy Drozdyuk    schedule 27.01.2011    source источник


Ответы (2)


Получил некоторый опыт работы с FUSE ESB, но никогда не использовал felix. Только что скачал felix 3.0.8 и попробовал:

g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (3.0.8)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.2)
    2|Active     |    1|Apache Felix Gogo Command (0.8.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.8.0)
    4|Active     |    1|Apache Felix Gogo Shell (0.8.0)

g! bundlelevel -s 10 4

g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (3.0.8)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.2)
    2|Active     |    1|Apache Felix Gogo Command (0.8.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.8.0)
    4|Resolved   |   10|Apache Felix Gogo Shell (0.8.0)
g!

Я очень старался воспроизвести вашу проблему, но не смог. Это работает, как указано. Вы пробовали это в новой установке или с более новой версией felix (не знаю, что вы используете)?

person FrVaBe    schedule 24.02.2011

Я думаю, не самое ясное из синтаксических сообщений :) Bundle[] относится к идентификаторам пакетов. Сделайте lb, получите идентификатор нужного пакета, затем запустите

уровень пакета -s NEW_LEVEL BUNDLE_ID

например: для уровня 4 и пакета 10 выполните

уровень пакета -s 4 10

Может быть, вы получали жалобы, потому что пропустили -s?

person Miquel    schedule 24.02.2011
comment
Нет, это все еще не работает. Если у меня есть пакет с идентификатором = 5 и уровнем = 1, и я хочу изменить его на уровень 2 и выполнить: bundlelevel -s 2 5, Феликс говорит, что необходимо указать целевые пакеты. - person Andriy Drozdyuk; 24.02.2011