Как я могу получить уведомление, когда пакет вызывает исключение во время выполнения ОСГИ? (равноденствие гелий) - PullRequest
0 голосов
/ 14 января 2012

Если пакет генерирует исключение в osgi, трассировка стека печатается на консоли osgi.Я хочу получать уведомления, если пакет создает исключение.Я думал, что использование службы регистрации osgi может помочь в этом.Однако я не мог заставить его работать под Гелиосом.

  • Вопрос в том, как я могу получить уведомление, если пакет вызывает исключение в osgi Helios.

  • Или, если регистрация osgi работает, как я могу заставить запись osgi работать в Helios?Насколько я гуглил, очевидно, что в настоящее время не реализована служба osgi loggin, интегрированная в helios.Я загрузил equinox skd 3.6 с сайта eclipse, который содержит комплект org.eclipse.equinox.log, однако я мог добавить его в качестве зависимости от моих плагинов или установить во время выполнения osgi.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 16 января 2012

Пакет может выдать исключение только тогда, когда он вызван .Это почти всегда, когда какой-то другой пакет вызывал одну из ваших опубликованных служб, или потому что пакет получил обратный вызов от фреймворка, такого как BundleActivator.start().

В первом случае OSGi не имеет абсолютно никакого способа узнать, чтоисключение произошло!Сервисные вызовы - это прямые вызовы методов между двумя объектами, которые не передаются и не передаются через инфраструктуру OSGi.Поэтому, если вы хотите узнать об исключении, вы должны перехватить его в коде вызова.

Во втором случае обратные вызовы происходят, потому что какой-то пакет вызвал их возникновение.Например, пакет будет запущен, потому что какой-то другой пакет называется Bundle.start().В этом случае исключение, выброшенное из метода BundleActivator.start(), будет заключено в BundleException, который может быть перехвачен вызывающим кодом.

Так что на самом деле все зависит от вашего кода, если только у вас нет третьего-партийные пакеты, которые вызывают ваши сервисы или запускают / останавливают ваши пакеты (например, веб-консоль или оболочка типа GoGo).В этом случае дело до стороннего кода.В большинстве случаев они должны отправлять сообщения в LogService, поэтому вы должны установить пакет журналов в свою инфраструктуру.

Вы сказали, что не можете установить пакет журналов, но вы не сделали 'не сказать, почему это не удалось, что сообщение об ошибке и т. д.!Такого рода, если информация важна, если вам нужна помощь в решении проблемы.

0 голосов
/ 15 января 2012

Вы можете попробовать Pax Logging и пользовательское приложение Log4J - Pax Logging предоставляет реализации OSGi LogService и т. Д., А также оболочки для распространенных каркасов журналирования.

Вы хотите сделать это исключительно для регистрации / уведомления об исключениях, или есть какая-то другая причина? UncaughtExceptionHandler может быть тем, что вам нужно, если вы управляете собственным или упакованным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...