Статьи

Сменная пружина RC? (OSGi с Spring Rich Client)

Мой последний пост был о чистом Swing, который можно легко OSGified. Технологию OSGi можно использовать для горячего развертывания или отмены развертывания файлов JAR на сервере приложений (на данный момент предлагается только сервер Spring) или просто для обновления приложения Swing во время выполнения или для написания плагинов для них. Я не знаю наверняка, но мне кажется, что Eclipse является наиболее известным пользователем OSGi (равноденствие является одной из реализаций спецификации…) в качестве настольного приложения, хотя NetBeans теперь может использовать пакеты OSGi .

(Кстати: вы знаете забавный миф, откуда могло появиться маленькое «я» из OSGi? Нет? Прочитайте комментарии здесь !)

В последнем посте я покажу вам несколько приложений Swing, которые были успешно OSGified, сегодня я хотел бы перечислить приложения на основе Swing или Eclipse, которые используют Spring Dynamic Modules :

Тогда сегодня, в отличие от моего последнего поста, я хотел бы показать вам идентичное решение для проекта Spring Rich Client .

Почему я должен использовать другой фреймворк поверх OSGi? Это просто: Spring DM предоставляет несколько приятных функций, таких как отсутствие зависимости от реализации OSGi ( felix , equinox , knopflerfish ) и даже отсутствие OSGi. Все (и думаю) это боб, как всегда! Но почему Spring DM? Почему не декларативные услуги от самой OSGi или Apache iPOJO ? Это просто: я не знаю других и Spring Rich Client плачет по поводу решения Spring;-)

Но чтобы сделать этот короткий рассказ очень коротким: после двух последних дней борьбы за интеграцию Spring Dynamic Modules с Spring Rich Client я бросил его и попробовал чистое решение OSGi — и оно работает. Это может быть уродливое решение для всех тех, кто любит внедрение зависимостей, но это можно оптимизировать позже. Сегодня это может быть первый плагин для Spring Rich Client — когда-либо:

osgified-springrc

Кнопка «поздороваться» с сообщением JOptionPane была установлена ​​через динамически загружаемый плагин. Исходный код практически идентичен тому, что был в моем предыдущем посте. Просто добавьте запуск Spring RC, прежде чем получить меню из приложения, чтобы создать MenuTracker, который вызывает MenuService (= плагин):

@Override
public void start(BundleContext context) throws Exception {
startup.start();
menuTracker = new MenuTracker(context, Application.instance().getActiveWindow().getControl().getJMenuBar().getMenu(1));
menuTracker.open();
}

Источник доступен из моего проекта TimeFinder через:

svn checkout -r 595 https://timefinder.svn.sourceforge.net/svnroot/timefinder/trunk timefinder

Обязательно запустите приложение из de.timefinder.core.osgi.Activator (основной метод!).

Я надеюсь, что этот пост вдохновил кого-то стать первым, кто вступит в брак Spring DM + Spring RC … или кого-то другого. предлагает рабочие примеры того, как Spring DM можно запустить из командной строки или из NetBeans.

С http://karussell.wordpress.com