Компонент OSGI не определяется SCR (ServiceMix)? - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь создать предварительный хук DataSource конфигурации OPS4J PAX, чтобы автоматизировать проверку целостности структуры базы данных и обновления через Liquibase. В соответствии с этого урока все, что мне нужно сделать, это пометить реализацию PreHook аннотацией @Component, присвоив ей свойство name и ссылаться на это свойство в конфигурации DataSource, что я и сделал.

Проблема, похоже, в том, что компонент никогда не выбирается SCR.

@Component(property = "name=coredbmigrate")
public class LiquibaseMigrator implements PreHook {
    public LiquibaseMigrator() {
        System.out.println();
        System.out.println("PREHOOK INITIALIZED");
        System.out.println();
    }

    @Override
    public void prepare(DataSource dataSource) throws SQLException {
        System.out.println();
        System.out.println("PREHOOK CALLED");
        System.out.println();
    }
}

Как вы можете видеть, я добавил основные выходные данные, чтобы указать, когда компонент устанавливается и вызывается, и ни один из них никогда не происходит.

Сгенерированный OSGI-INF/lv.cps.is.ledger.accounts.db.LiquibaseMigrator.xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<component name="lv.cps.is.ledger.accounts.db.LiquibaseMigrator">
    <implementation class="lv.cps.is.ledger.accounts.db.LiquibaseMigrator"/>
    <service>
        <provide interface="org.ops4j.pax.jdbc.hook.PreHook"/>
    </service>
    <property name="name" type="String" value="coredbmigrate"/>
</component>

Service-Component заголовок в MANIFEST.MF также установлен правильно.

В чем может быть причина того, что компонент никогда не создается? А может это так, но я этого не вижу?

1 Ответ

0 голосов
/ 28 апреля 2018

У вас установлена ​​функция scr? По умолчанию он не установлен, и в этом случае компоненты DS игнорируются.

Когда он установлен, вы можете использовать команды scr: * для проверки состояния ваших компонентов.

...