Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apache felix, start level 
:(
    Опции темы
Opik
Дата 28.2.2011, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Поднял значит Apache Felix. Установил jetty bundle, написал свой bundle, который запускается ДО jetty, соответственно нет контекста и не грузится.
Если рестартануть его. то все ок. Значит нужно что бы мой бандл грузился уже после джетти. Как это сделать? Как установить тот же start.level к примеру на 2?
PM MAIL Skype   Вверх
COVD
Дата 28.2.2011, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Как установить тот же start.level к примеру на 2? 

Устанавливается он в пропертях. Но, насколько я помню мои эксперименты с Феликсом, там все вроде прозрачно в теории, но не на практике.
PM MAIL   Вверх
Opik
Дата 28.2.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Цитата(COVD @ 28.2.2011,  16:53)
Цитата

Как установить тот же start.level к примеру на 2? 

Устанавливается он в пропертях. Но, насколько я помню мои эксперименты с Феликсом, там все вроде прозрачно в теории, но не на практике.

Ну вот на практике и проблема сейчас smile
PM MAIL Skype   Вверх
COVD
Дата 28.2.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Попробуйте equinox, возможно там без проблем.

Я предполагаю, что вы запускаете Felix. Он контролирует жизненный цикл своих плагинов. jetty явлается одним плагином. Другим плагином является какая-то библиотека.  Felix стартует сам, после этого запускает плагины из списка. Согласно документации  Felix должен соблюдать порядок запуска плагинов, определяемый параметром  start.level . Однако это реализовано как-то непросто.

Тем не менее, основная идея в поддержке динамической загрузки/выгрузки плагинов. Это означает, что в любой момент какой-то из плагинов может быть недоступен другим плагинам. Отсюда следует, что порядок загрузки не должен быть важен для системы. Плагин, который пользуется услугами других плагинов,  должен уметь обрабатывать ситуацию,  когда  внешний компонент недоступен по какой либо причине. Контейнер OSGi лишь предоставляет индикаторы наличия или отсутствия компонента.  
 

Это сообщение отредактировал(а) COVD - 28.2.2011, 21:45
PM MAIL   Вверх
Opik
Дата 28.2.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Да, тут ты прав. В итоге написал примерно следующий сервис листенер:
Код

    public void serviceChanged(ServiceEvent event)
    {
        try {
            String[] objectClass = (String[])
                event.getServiceReference().getProperty("objectClass");
    
            if ("org.osgi.service.http.HttpService".equals(objectClass[0])) {
                ServiceReference sRef = event.getServiceReference();
                HttpService service = (HttpService) context.getService(sRef);
                if (sRef != null) {
                 if(event.getType() == ServiceEvent.REGISTERED) {
                        service.registerServlet("/hello", new HelloWorld(), null, null);
                 } else if(event.getType() == ServiceEvent.MODIFIED) {

                 } else if(event.getType() == ServiceEvent.UNREGISTERING) {
                     service.unregister("/hello");
                 }
                }
            }
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (NamespaceException e) {
            e.printStackTrace();
        }
    }


Вроде пока с задачей справляется.

Добавлено через 1 минуту и 13 секунд
С другой стороны, если зависимостей будет больше, это уже будет труднее обработать подобным образом.
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.