Пакет может выдать исключение только тогда, когда он вызван .Это почти всегда, когда какой-то другой пакет вызывал одну из ваших опубликованных служб, или потому что пакет получил обратный вызов от фреймворка, такого как BundleActivator.start()
.
В первом случае OSGi не имеет абсолютно никакого способа узнать, чтоисключение произошло!Сервисные вызовы - это прямые вызовы методов между двумя объектами, которые не передаются и не передаются через инфраструктуру OSGi.Поэтому, если вы хотите узнать об исключении, вы должны перехватить его в коде вызова.
Во втором случае обратные вызовы происходят, потому что какой-то пакет вызвал их возникновение.Например, пакет будет запущен, потому что какой-то другой пакет называется Bundle.start()
.В этом случае исключение, выброшенное из метода BundleActivator.start()
, будет заключено в BundleException
, который может быть перехвачен вызывающим кодом.
Так что на самом деле все зависит от вашего кода, если только у вас нет третьего-партийные пакеты, которые вызывают ваши сервисы или запускают / останавливают ваши пакеты (например, веб-консоль или оболочка типа GoGo).В этом случае дело до стороннего кода.В большинстве случаев они должны отправлять сообщения в LogService, поэтому вы должны установить пакет журналов в свою инфраструктуру.
Вы сказали, что не можете установить пакет журналов, но вы не сделали 'не сказать, почему это не удалось, что сообщение об ошибке и т. д.!Такого рода, если информация важна, если вам нужна помощь в решении проблемы.