#localization #classpath #osgi #glassfish-3
#локализация #classpath #osgi #glassfish-3
Вопрос:
Мне нужно добавить поддержку L10N в OSGI bundle. Я хотел бы поместить все свойства ресурса в папку conf / resource за пределами пакета (чтобы сделать их видимыми из любого пакета).
Есть ли возможность добавить папку в путь к классам пакета OSGI?
Upd: Я видел, что OSGI предлагает добавлять пакеты ресурсов внутри фрагментов.
Ответ №1:
Вы можете попробовать одно из следующих:
- Поместите ресурсы l10n в их собственный пакет и используйте обычный механизм зависимости OSGi для доступа к ним из других пакетов. В конце концов, именно так и предполагалось использовать OSGi.
- Поместите ресурсы l10n в их собственный каталог и попросите пакеты прочитать их как файлы. Это означает, что ресурсы l10n не могут быть развернуты как пакет, и у вас могут возникнуть проблемы с разрешениями, связанные с вводом-выводом.
- Если только для одного пакета требуются ресурсы l10n, ресурсы действительно могут быть объединены в виде фрагментов. Фрагменты — это пакеты, которые прикреплены к хост-пакету. У вас может быть один пакет фрагментов для каждого языка / локали, и все они будут иметь пакет using в качестве хоста.
- Если вам нужно только локализовать заголовки OSGi, это очень просто; Я сомневаюсь, что это то, что вам нужно.
Решение 1 — это, безусловно, способ пойти и остаться в духе OSGi. Решение 2 ужасно, если вы спросите меня. Решение 3 хорошо, если каждый пакет может быть локализован независимо.
Комментарии:
1. спасибо за подробный ответ! Я выбираю решение 3, потому что у меня есть несколько клиентов, которым необходимо добавить ресурсы L10N, поэтому они будут находиться в отдельных модулях. Я помещу их в отдельные фрагменты, каждый фрагмент содержит 1 ресурс объемом 10 миллионов со всеми поддерживаемыми локализациями.