Какая конфигурация применяется при одинаковом количестве согласованных режимов выполнения

#aem #aem-6

#osgi #aem #sling

Вопрос:

Я использую файлы конфигурации OSGI для определения конфигурации для разных сред, как указано в конфигурации OSGI. У меня есть конфигурации для нескольких режимов запуска, сохраненные в одном репозитории. В документации указано

«Если применимо несколько конфигураций для одного и того же PID, применяется конфигурация с наибольшим количеством совпадающих режимов запуска».

Каков механизм, если применимо несколько конфигураций для одного и того же PID, и две или более конфигурации привязаны к наибольшему числу совпадающих режимов запуска? Какой из них применяется?

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

1. Хороший вопрос. Интересно также, имеет ли значение, является ли /apps/[your-site]/config a sling:Folder или a sling: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. Спасибо за исчерпывающий ответ со ссылками!