2015-10-01 2 views
0

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

java.lang.IllegalArgumentException: required property 'bundleContext' has not been set

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

Мой код:

общественного класса ApplicationContextObserver реализует OsgiBundleApplicationContextListener { частное преходящее INT countRefreshed = 0; private transient 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, SpringDM и этого слушателя)?

+0

Spring DM уже давно мертв, вы должны использовать классы Eclipse Virgo, а не старые Spring DM. –

+0

ОК. Я могу удалить SpringDM из classpath, но мне нужно сохранить Spring core, так как мой проект основан на Spring. Как классы из Eclipse Virgo мне нужно использовать (и как мне нужно сделать это правильно), чтобы все работало с помощью BundleContext-слушателя? Можете ли вы представить пример проекта maven? Благодаря!! – JohnMake0

ответ

Смежные вопросы