Управление транзакциями Spring и OSGi

Я новичок в OSGi, и у меня есть приложение, которое я хотел бы перенести на OSGi.

Я создал один комплект, состоящий только из интерфейсов DAO. Этот пакет представляет мои услуги DAO. Я также создал второй пакет, который предоставляет реализации интерфейсов DAO с использованием JDBC. Этот пакет регистрирует одну службу для каждого интерфейса с помощью диспетчера зависимостей Apache Felix. Таким образом, мои услуги доступны из других компонентов.

Мои классы реализации DAO были аннотированы аннотацией @Repository для автоматического сканирования пути к классам, но теперь я использую реестр служб OSGi для регистрации службы. Следовательно, услуги могут быть получены клиентским кодом напрямую с помощью Apache Felix Dependency Manager.

Методы моих классов реализации DAO также снабжены аннотацией @Transactional для управления транзакциями. Проблема в том, что аннотации @Transactional не будут иметь никакого эффекта, поскольку DAO не зарегистрированы ни в одном контейнере Spring.

Как правильно обрабатывать транзакции при использовании OSGi? Я не хочу использовать программное управление транзакциями Spring.

Спасибо, Микаэль


person Mickael Marrache    schedule 30.01.2014    source источник


Ответы (1)


Взгляните на Aries Blueprint с Aries JPA и JTA. Вы можете настроить его следующим образом:

<bean id="jpaDao"
    class="my.jpa.JpaDao">
    <jpa:context property="em" unitname="persistence" />
    <tx:transaction method="*" value="Required" />
</bean>

вы также найдете рабочий образец на моем github, образец находится на строка 12 в файле blueprint.xml.

person Achim Nierbeck    schedule 30.01.2014