2013-04-28 2 views
0

Я строю систему кэширования в своем приложении OSGI, где моя первоначальная мысль была, нормально, когда зарегистрирована служба. Я хочу применить кеширование, я просто проксирую эту службу и зарегистрирую прокси-сервер с помощью очень высокий рейтинг обслуживания.Динамизм сервисов при использовании чертежа Овна

Это почти работает, в зависимости от того, в каком порядке запущены мои пучки. Если потребитель запускается последним, все работает, а также, если я остановлю комплект кеширования, потребитель откажется от исходной реализации BUT, если я перезапущу пакет кэширования, тогда потребитель не получит прокси-версию службы.

Чтобы сделать простой пример для доказательства этого, я сделал простой пакет, который регистрирует службу знаний вручную с гораздо более высоким рейтингом (т. Е. Не создавая прокси и т. Д.), И проблема все еще остается, когда более высокий рейтинг начатый потребитель все еще использует услугу с более низким рейтингом.

Выполняется ли динамизм чертежа только при определенных обстоятельствах?

  1. Первоначальная проводка -> выбрать самый высокий рейтинг обслуживания
  2. Когда проводной услуги исчезают -> выбрать самый высокий рейтинг сервиса
  3. Когда появится новая услуга -> ничего не делают

Есть ли способ получить поведение 1 и 2 также в случае 3: d?

Или есть лучший способ добиться того, что я пытаюсь сделать? То есть. с HookEvent или аналогичным?

Благодаря

EDIT: Я решил эту конкретную проблему путем обновления используемых комплектов после регистрации прокси, который, кажется, чтобы обновить токопроводящую службу.

Bundle[] usingBundles = reference.getUsingBundles(); 
for(.....) 
{ 
    b.update(); 
} 

ответ

1

Ну, то, что рейтинг сервиса действует только на время, когда вы ищете услугу. Тем не менее, вам, вероятно, понадобится еще один способ сообщить вашему потребляющему пакету, что служба, которую вы ищете, снова возвращается с функциями кеширования. Вы можете попытаться активировать специальные события при регистрации специализированного прокси-сервиса и использовать их в своем сервисно-потребительском комплекте. Если эти события видны, они «переувязываются» с привилегированным сервисом. Хотя для этого, вероятно, потребуется больше, чем просто xml.