#osgi
#osgi
Вопрос:
Как я могу контролировать доступ к своим пакетам. У меня есть набор пакетов, которые предоставляют пакеты через экспорт в MANIFEST.MF. Предполагается, что представленные пакеты должны использоваться только в моем наборе пакетов. Никаким другим внешним пакетам не должно быть разрешено использовать эти пакеты с помощью «import package».
Есть ли какой-нибудь способ, которым я могу наложить эти ограничения?
Комментарии:
1. Можете ли вы объяснить, почему вы не хотите, чтобы другие пакеты могли импортировать ваши пакеты?
Ответ №1:
Вы можете взглянуть на OSGi Security (спецификация ядра OSGi уровня безопасности 2), чтобы управлять ограничениями на различные ресурсы (пакеты, пачек, служб и т.д.).
В вашем случае вы можете установить PackagePermission с действиями ИМПОРТА / ЭКСПОРТА в свои пакеты. У других пакетов не будет никаких разрешений на импорт ваших пакетов.
Ответ №2:
Во-первых, является ли проблемой то, что кто-то другой импортирует ваш пакет? Если вы не экспортируете реализации, которые никто не должен видеть (в этом случае вам все равно следует пересмотреть свое разделение), обычно нет проблем с наличием некоторых пакетов, которые другие могут импортировать, а могут и не импортировать.
Если вы уверены, что вам нужно скрыть определенные пакеты, простых способов сделать это нет. На ум приходят следующие вещи
- используйте ResolverHook, чтобы ограничить видимость ваших пакетов (доступно только с версии 4.3),
- запускайте свои пакеты во встроенной платформе и предоставляйте хосту только те пакеты, которыми вы хотите поделиться из этой платформы.
Однако оба эти метода довольно сложны, и я бы держался от них подальше, если вы, например, не создаете свой собственный сервер приложений.