Обновление: по какой-то причине потребовалось некоторое время, чтобы понять, но я вижу, что файлы конфигурации зависят от PID пакета, и, пытаясь загрузить один и тот же файл cfg в схеме в двух разных пакетах, я создавал условие гонки. Убедитесь, что вы используете файлы cfg только в их целевых пакетах.
Примечание. Вышеизложенное относится только к пакетам чертежей. Если вы не зависите от службы OSGI ConfigAdmin для динамического хранения пакетов и хотите использовать файлы cfg из чего-то вроде контекста Camel, это должно быть хорошо.
У меня есть 2 чертежа, развернутых через папку «развертывание» karaf 4.0.8. Оба имеют следующий общий раздел:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint https://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<cm:property-placeholder id="common" persistent-id="common" update-strategy="reload" placeholder-prefix="$(" placeholder-suffix=")"/>
<cm:property-placeholder id="sqlcfg" persistent-id="12345" update-strategy="reload" placeholder-prefix="$[" placeholder-suffix="]">
</cm:property-placeholder>
Я хотел бы загрузить конфигурацию, общую для обоих, из «общего». Однако, когда они совместно используют один и тот же файл persistId и свойства из папки «etc», схема, которую нужно развернуть вторым, продолжает загружаться и выгружаться. Если я заставлю их загружаться из разных файлов - все работает.
Любые идеи от сообщества, почему у меня такое поведение? Заранее спасибо.