Karaf v4.0.8: несколько чертежей не могут загрузить конфигурацию с одного и того же постоянного идентификатора

Обновление: по какой-то причине потребовалось некоторое время, чтобы понять, но я вижу, что файлы конфигурации зависят от 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», схема, которую нужно развернуть вторым, продолжает загружаться и выгружаться. Если я заставлю их загружаться из разных файлов - все работает.

Любые идеи от сообщества, почему у меня такое поведение? Заранее спасибо.


person saycat    schedule 04.03.2017    source источник


Ответы (1)


По моему опыту, вы либо устанавливаете другой постоянный идентификатор, либо устанавливаете update-strategy="none". Это предотвратит переход второго модуля в этот цикл загрузки/выгрузки.

Недостатком является то, что вы теряете автоматическое обновление файла конфигурации.

person jmorones    schedule 09.03.2018