Есть ли способ узнать, когда и в каком плагине зарегистрирована служба Eclipse? - PullRequest
2 голосов
/ 14 августа 2011

Приятно, что Eclipse все больше использует сервис-ориентированную архитектуру, но я всего лишь разработчик, который видит недостаток знаний по тому, какой плагин и на каком этапе службы зарегистрирован как проблема?

Рассмотрим пример:

IServiceLocator someServiceLocator = ...
SomeService someService = (SomeService)someServiceLocator.getService(SomeService.class);
// oops, someService is null

Возможные причины, по которым someService равен null:

  • Некоторый плагин, который регистрирует этот сервис, не присутствует или не загружен
  • Сервис еще не зарегистрирован

Как решить эту проблему? Есть ли инструменты?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 августа 2011

Если вы хотите узнать, какие плагины установлены и запущены, вы можете использовать консоль OSGI и просмотреть состояние плагинов.

Так что, если вы ищете сервис «XService», найдите плагин, который содержит сервис, и посмотрите состояние плагина на консоли OSGI.

Запустите приложение с параметром -console и введите ss в консоли osgi. Это не просто, но работает.

0 голосов
/ 15 августа 2011

Краткий ответ: нет доступных инструментов.

Для получения полного списка услуг и того, где они зарегистрированы, выполните «Иерархия вызовов» на ServiceLocator.registerService(Class api, Object service).

Полный список доступных глобальных сервисов можно найти на Workbench.initializeDefaultServices(). Существуют некоторые дополнительные услуги, которые доступны только на уровне окна или детали рабочего места.

...