2014-01-30 2 views
1

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

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

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

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

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

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

ответ

2

Посмотрите на Овна Blueprint с Овном JPA и JTA. Вы можете настроить его с планом, как в следующем:

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

вы также найдете рабочий образец в my github, проба на line 12 в blueprint.xml.

Смежные вопросы