Spring JPA Transaction在servlet上下文中不可用,但在Web-App中不可用

时间:2015-09-01 11:30:46

标签: spring hibernate servlets jpa transactions

我们有一个基于Vaadin的Web应用程序,它具有以下架构:

  1. 使用JPA-Repositories和Services来处理持久性的核心模块。

  2. 我们有一个Vaadin-Web-App,它使用Core-Module并将所有持久性内容委托给核心模块。交易和东西在那里工作。您可以在执行插入的日志中,数据最终在数据库中。

  3. 有一个servlet只提供端点,所以其他一些应用程序有时会向这个servlet发送数据。然后,servlet使用Core-Module中的服务来持久保存数据。但不知何故,数据永远不会在数据库上结束。如果您进行JPA-Save,您只能看到"选择" - 日志中的陈述。

  4. 我做过一些研究,不知何故交易管理有问题。我不太懂,因为交易管理在常规网络应用程序中运行。

    Vaadin的应用程序context.xml - Web-App:

    <import resource="classpath:applicationContextCore.xml" />
    
    <context:component-scan base-package="de.dmsb.my.configuration"/>
    <context:component-scan base-package="de.dmsb.my.controller"/>
    <context:component-scan base-package="de.dmsb.my.dto.xml"/>
    <context:component-scan base-package="de.dmsb.my.handler"/>
    <context:component-scan base-package="de.dmsb.my.services"/>
    <context:component-scan base-package="de.dmsb.my.ui"/>
    

    这是dispatcher-servlet.xml:

        <tx:annotation-driven transaction-manager="transactionManager"/>
    
    <context:component-scan base-package="de.dmsb.my.controller" use-default-filters="false" >
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.RestController"/>
    </context:component-scan>
    

    端点已注册,我可以向他们发送数据。

    但是当我尝试使用Core-Module中的服务或存储库来保存数据时,我只看到日志中的select语句。

    有什么想法吗?

    提前谢谢你,

    更新:

    我将applicationContext.xml更改为以下内容,但问题仍然存在:

    <import resource="classpath:applicationContextCore.xml" />
    
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
    <context:component-scan base-package="de.dmsb.my.configuration"/>
    <context:component-scan base-package="de.dmsb.my.controller"/>
    <context:component-scan base-package="de.dmsb.my.dto.xml"/>
    <context:component-scan base-package="de.dmsb.my.handler"/>
    <context:component-scan base-package="de.dmsb.my.services"/>
    <context:component-scan base-package="de.dmsb.my.ui"/>
    <context:annotation-config/>
    

0 个答案:

没有答案