Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Apache felix, start level |
Автор: Opik 28.2.2011, 00:40 |
Поднял значит Apache Felix. Установил jetty bundle, написал свой bundle, который запускается ДО jetty, соответственно нет контекста и не грузится. Если рестартануть его. то все ок. Значит нужно что бы мой бандл грузился уже после джетти. Как это сделать? Как установить тот же start.level к примеру на 2? |
Автор: COVD 28.2.2011, 17:53 | ||
Устанавливается он в пропертях. Но, насколько я помню мои эксперименты с Феликсом, там все вроде прозрачно в теории, но не на практике. |
Автор: Opik 28.2.2011, 19:12 | ||||
Ну вот на практике и проблема сейчас ![]() |
Автор: COVD 28.2.2011, 20:50 |
Попробуйте equinox, возможно там без проблем. Я предполагаю, что вы запускаете Felix. Он контролирует жизненный цикл своих плагинов. jetty явлается одним плагином. Другим плагином является какая-то библиотека. Felix стартует сам, после этого запускает плагины из списка. Согласно документации Felix должен соблюдать порядок запуска плагинов, определяемый параметром start.level . Однако это реализовано как-то непросто. Тем не менее, основная идея в поддержке динамической загрузки/выгрузки плагинов. Это означает, что в любой момент какой-то из плагинов может быть недоступен другим плагинам. Отсюда следует, что порядок загрузки не должен быть важен для системы. Плагин, который пользуется услугами других плагинов, должен уметь обрабатывать ситуацию, когда внешний компонент недоступен по какой либо причине. Контейнер OSGi лишь предоставляет индикаторы наличия или отсутствия компонента. |
Автор: Opik 28.2.2011, 23:08 | ||
Да, тут ты прав. В итоге написал примерно следующий сервис листенер:
Вроде пока с задачей справляется. Добавлено через 1 минуту и 13 секунд С другой стороны, если зависимостей будет больше, это уже будет труднее обработать подобным образом. |