Каково стандартное поведение в OSGI для контейнера, выбирающего пакет, который экспортируется несколькими пакетами? - PullRequest
1 голос
/ 31 августа 2011

Мне просто интересно, как контейнер выбирает, какой пакет загрузить класс, если один и тот же пакет экспортируется несколько раз разными пакетами.

Учитывая следующее, что верно. Обратите внимание, что в списке также указан фактический порядок развертывания пакетов.

  • package.x версия 1 (A)
  • package.x версия 2 (B)
  • package.x версия 3 (C)

Если добавлен 4-й комплект, и для него требуется 'package.x.SomeClass' 1-2, откуда он будет выбран?

  • Случайно ли он выбирается из A или B?
  • Не удается развернуть B из-за столкновения?
  • Он выбирает А, потому что он был первым?

Все ли контейнеры выполняют одну и ту же функцию или поведение разных популярных пакетов отличается?

Ответы [ 3 ]

2 голосов
/ 06 февраля 2013

OSGi - это компонентная структура, сама идея в том, что такого рода проблемы бесполезны для обсуждения, поскольку они могут варьироваться в зависимости от среды и набора установленных пакетов. ЛЮБОЕ неуказанное предположение, которое вы делаете, может быть нарушено и привести к падению вашего кода. Прелесть OSGi в том, что она позволяет вам указать ВАШИ ограничения. Платформы OSGi никогда не будут нарушать ваши ограничения, это ваша гарантия. То, как он находит решение в конкретном случае, должно быть совершенно неуместно, поскольку любое неявное предположение может привести к ошибкам в других ситуациях.

2 голосов
/ 31 августа 2011

Фреймворк выберет либо A, либо B. Он не делает это "случайно", но эвристика сложна, и лучше не пытаться предсказать, что произойдет. Кроме того, поведение в этом случае не указано и зависит от реализации реализаций OSGi.

0 голосов
/ 13 сентября 2011

В Феликсе контейнер начинается с версии 0.0.0 пакета, а затем увеличивается в сторону увеличения.Затем он подключится к первой версии связки, к которой он подключен.Итак, если у вас есть два пакета, версия 1.1.1 и версия 1.2.0, и вы пытаетесь подключиться к этому пакету, но не указываете номер версии, Феликс всегда должен выбирать версию 1.1.1.

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