«Приложение 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 и этого слушателя)?