добавить внешнюю папку в путь к классам пакета OSGI

#localization #classpath #osgi #glassfish-3

#локализация #classpath #osgi #glassfish-3

Вопрос:

Мне нужно добавить поддержку L10N в OSGI bundle. Я хотел бы поместить все свойства ресурса в папку conf / resource за пределами пакета (чтобы сделать их видимыми из любого пакета).

Есть ли возможность добавить папку в путь к классам пакета OSGI?

Upd: Я видел, что OSGI предлагает добавлять пакеты ресурсов внутри фрагментов.

Ответ №1:

Вы можете попробовать одно из следующих:

  1. Поместите ресурсы l10n в их собственный пакет и используйте обычный механизм зависимости OSGi для доступа к ним из других пакетов. В конце концов, именно так и предполагалось использовать OSGi.
  2. Поместите ресурсы l10n в их собственный каталог и попросите пакеты прочитать их как файлы. Это означает, что ресурсы l10n не могут быть развернуты как пакет, и у вас могут возникнуть проблемы с разрешениями, связанные с вводом-выводом.
  3. Если только для одного пакета требуются ресурсы l10n, ресурсы действительно могут быть объединены в виде фрагментов. Фрагменты — это пакеты, которые прикреплены к хост-пакету. У вас может быть один пакет фрагментов для каждого языка / локали, и все они будут иметь пакет using в качестве хоста.
  4. Если вам нужно только локализовать заголовки OSGi, это очень просто; Я сомневаюсь, что это то, что вам нужно.

Решение 1 — это, безусловно, способ пойти и остаться в духе OSGi. Решение 2 ужасно, если вы спросите меня. Решение 3 хорошо, если каждый пакет может быть локализован независимо.

Комментарии:

1. спасибо за подробный ответ! Я выбираю решение 3, потому что у меня есть несколько клиентов, которым необходимо добавить ресурсы L10N, поэтому они будут находиться в отдельных модулях. Я помещу их в отдельные фрагменты, каждый фрагмент содержит 1 ресурс объемом 10 миллионов со всеми поддерживаемыми локализациями.