2012-02-07 2 views
1

У меня проблемы с прослушиванием пакетов OSGi, входящих в состояние RESOLVED в Eclipse RCP. Ни BundleListener, ни BundleTracker, похоже, не замечают, что пучки входят в состояние RESOLVED.OSGi BundleListener и BundleTracker в Eclipse RCP

Слушатели, однако, замечают событие RESOLVED to ACTIVE. Возможно ли, что часть конфигурации запуска входит в состояние RESOLVED, прежде чем пулы слушателей имеют возможность зарегистрировать себя?

Еще одна вещь, я думал, что пакеты будут лениво/автоматически перейти от RESOLVED к ACTIVE, как только другие пакеты (например) попытались получить доступ к своим сервисам/классам?

Cheers!

ответ

1

Возможно, что все пучки станут РЕШЕННЫМИ до того, как будет запущена любая пучка. Чтобы получить контроль, необходимо активировать пакет, чтобы он мог зарегистрировать BundleListener или открыть BundleTracker.

РАЗРЕШЕННЫЙ комплект может загружать классы без ACTIVE. Если пучок помечен для ленивой активации, то загрузка 1-го класса из пучка может инициировать активацию.

+0

Спасибо за ваш ответ. Знаете ли вы, есть ли способ принудительно активировать состояние ACTIVE на некоторых пакетах, прежде чем другие будут вводить RESOLVED? – deephacks

+0

Это не так, вообще возможно. С помощью ResolverHook вы можете получить уведомление, когда пакет будет решен. И крючок может попытаться запустить какой-то другой пакет. Но это может не сработать. Например, если оба пакета являются частью одной и той же операции разрешения. Я думаю, вы должны пересмотреть, почему вы хотите это сделать, поскольку он кажется плохим дизайном с хрупкими зависимостями. –

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