#aem #aem-6
#osgi #aem #sling
Вопрос:
Я использую файлы конфигурации OSGI для определения конфигурации для разных сред, как указано в конфигурации OSGI. У меня есть конфигурации для нескольких режимов запуска, сохраненные в одном репозитории. В документации указано
«Если применимо несколько конфигураций для одного и того же PID, применяется конфигурация с наибольшим количеством совпадающих режимов запуска».
Каков механизм, если применимо несколько конфигураций для одного и того же PID, и две или более конфигурации привязаны к наибольшему числу совпадающих режимов запуска? Какой из них применяется?
Комментарии:
1. Хороший вопрос. Интересно также, имеет ли значение, является ли
/apps/[your-site]/config
asling:Folder
или asling:OrderedFolder
.
Ответ №1:
Порядок или конфигурации OSGi обрабатываются Apache Sling. В Sling есть система, которая определяет приоритет для устанавливаемых ресурсов, которая включает конфигурации OSGi.
Из коробки наиболее мощным компонентом вычисления приоритета является корневая папка — /apps
vs /libs
. Посмотрите JcrInstaller и его конфигурацию на вашем локальном хостинге по адресу http://localhost:4502/system/console/configMgr/org.apache.sling.installer.provider.jcr.impl.JcrInstaller. Разница между /libs
«точками» и /apps
«точками» велика при 100 ( {"/libs:100", "/apps:200"}
).
После определения корневого приоритета режимы запуска Sling суммируются. См. org.apache.sling.installer.provider.jcr.impl.FolderNameFilter#getPriority . Каждый режим выполнения оценивается в 1 «балл» независимо от порядка. Например, на данный момент, если у вас есть режимы запуска alpha
и bravo
, config.alpha.bravo
равно config.bravo.alpha
.
Затем Priority рассматривает определенные вещи, такие как состояние ресурса и установлен ли ресурс или нет, и является ли ресурс SNAPSHOT
версией, которая, вероятно, будет применяться больше к пакетам, чем к конфигурациям в вашем проекте. В конечном счете, сравнение конфигураций OSGi сведется к лексикографическому сравнению строк URL-адресов. На данном этапе возврат к нашему примеру config.alpha.bravo
имеет более высокий приоритет, чем config.bravo.alpha
.
Если конфигурации OSGi лексикографически равны, конечным сравнением является MD5-хэш дайджеста. См. org.apache.sling.installer.provider.jcr.impl.ConfigNodeconverter#computeDigest.
Смотрите полную функцию сравнения в org.apache.sling.installer.core.impl.RegisteredResourceImpl#compare .
Комментарии:
1. Спасибо за исчерпывающий ответ со ссылками!