Spring DM (модули динамики), приложение OSGI и Greenpages

«Приложение Greenpages» — это образец веб-приложения, доступный на сайте Eclipse Virgo, который представляет собой пример совместного использования OSGI и Spring DM и может быть развернут в контейнере Virgo. См.: http://www.eclipse.org/virgo/samples/ . Я смог запустить приложение без ошибок. Но как только я пытаюсь реализовать интерфейс org.springframework.osgi.context.event.OsgiBundleApplicationContextListener, все идет не так, и я начинаю получать эту ошибку:

java.lang.IllegalArgumentException: обязательное свойство 'bundleContext' не установлено

Интерфейс OsgiBundleApplicationContextListener предоставляет способ прослушивания событий BundleContext. См.: http://docs.spring.io/osgi/docs/current/api/org/springframework/osgi/context/event/OsgiBundleApplicationContextListener.html

Мой код:

открытый класс ApplicationContextObserver реализует OsgiBundleApplicationContextListener { частный переходный интервал int countRefreshed = 0; частный переходный int countClosed = 0;

public void onOsgiApplicationEvent(OsgiBundleApplicationContextEvent evt) {
    if(evt instanceof
            OsgiBundleContextRefreshedEvent) {
        countRefreshed++;
    } else if(evt instanceof
            OsgiBundleContextClosedEvent) {
        countClosed++;
    }
}
public int getCountRefreshed() {
    return countRefreshed;
}
public int getCountClosed() {
    return countClosed;
}

}

И заявленные бобы:

<bean id="ApplicationContextObserver" class="greenpages.ApplicationContextObserver" />
<osgi:service ref="ApplicationContextObserver" interface="org.springframework.osgi.context.event.OsgiBundleApplicationContextListener" />      

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

Что происходит не так (если возможно, можете ли вы прикрепить работающий пример с использованием Virgo Container, SpringDM и этого слушателя)?


person JohnMake0    schedule 01.10.2015    source источник
comment
Spring DM уже давно мертв, вы должны использовать классы Eclipse Virgo, а не старые Spring DM.   -  person M. Deinum    schedule 01.10.2015
comment
В ПОРЯДКЕ. Я могу удалить SpringDM из пути к классам, но мне нужно сохранить ядро ​​Spring, так как мой проект основан на Spring. Какие классы из Eclipse Virgo мне нужно использовать (и как мне нужно сделать это правильно), чтобы все работало с помощью слушателя BundleContext? Можете ли вы привести какой-либо пример проекта maven? Спасибо!!   -  person JohnMake0    schedule 01.10.2015


Ответы (1)


Ознакомьтесь с разделом Миграция динамических модулей Spring в Eclipse Gemini Blueprint. Более подробную информацию можно найти в Eclipse Gemini Blueprint. Справочное руководство (особенно раздел 8.3. Параметры конфигурации расширителя).

person Florian Waibel    schedule 02.10.2015