Hibernate和ehCache配置的事务问题

Hibernate和ehCache配置的事务问题,hibernate,ehcache,jta,Hibernate,Ehcache,Jta,在hibernate映射中,缓存使用为只读 <class name="cdot.ctms.layer.services.dispatch.data.DispatchMapDTO" table="DISPATCH_MAP" mutable="false" optimistic-lock="version"> <cache usage="read-only"/> 在我的ehCache.xml中,我的默认缓存设置为 <defaultC

在hibernate映射中,缓存使用为只读

<class name="cdot.ctms.layer.services.dispatch.data.DispatchMapDTO"
        table="DISPATCH_MAP" mutable="false" optimistic-lock="version">
        <cache usage="read-only"/>

在我的ehCache.xml中,我的默认缓存设置为

<defaultCache
            maxEntriesLocalHeap="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            diskSpoolBufferSizeMB="30"
            maxEntriesLocalDisk="10000000"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            transactionalMode="xa_strict">
        <persistence strategy="localTempSwap"/>
    </defaultCache>

当我的对象获取默认缓存时,它会遇到事务回滚问题

如果我为我引用的对象显式添加缓存,我不会遇到任何问题

<cache 
        name="cdot.ctms.layer.services.dispatch.data.DispatchMapDTO" 
        maxEntriesLocalHeap="100" 
        eternal="false"
        timeToLiveSeconds="300">
        <persistence strategy="localTempSwap" />
    </cache>

我们有很多DTO在应用程序中使用默认缓存。我是否必须在ehCache.xml中为每个对象定义如上所述的缓存?在hibernate手册中找不到任何相关文档

有人能解释一下我的配置有什么问题吗?针对上述问题的最佳做法是什么

2015-02-24 10:05:27390错误(http-nio-127.0.0.1-8080-exec-6)[cdot.ctms.layer.web.fire.spring.AtmosphereHandlerExceptionResolver]异常解析程序错误是:JTA事务意外回滚(可能是由于超时);嵌套异常为javax.transaction.rollback异常:无法提交:标记为回滚的事务 org.springframework.transaction.UnexpectedRollbackException:JTA事务意外回滚(可能是由于超时);嵌套异常为javax.transaction.rollback异常:无法提交:标记为回滚的事务 位于org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1024) 位于org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757) 位于org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 位于org.jencks.GeronimoPlatformTransactionManager.commit(GeronimoPlatformTransactionManager.java:76) 位于org.springframework.transaction.interceptor.TransactionSpectSupport.commitTransactionAfterReturning(TransactionSpectSupport.java:521) 位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:291) 位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上 位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 位于com.sun.proxy.$Proxy143.getDispatchMaps(未知源) 位于cdot.ctms.layer.delegate.controllers.DispatchController.getDispatchMaps(DispatchController.java:60) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于cdot.ctms.layer.delegate.facade.AnnotationDelegateController.executeInternal(AnnotationDelegateController.java:287) 位于cdot.ctms.layer.delegate.facade.AnnotationDelegateController.processAction(AnnotationDelegateController.java:232) 位于cdot.ctms.layer.web.controller.BaseWebController.processAction(BaseWebController.java:94) 位于cdot.ctms.layer.web.dispatch.controller.DispatchController.findDispatchMapsUnderSection(DispatchController.java:82) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 位于org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 位于org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777) 位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706) 位于org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) 位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 位于org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 在org.atmospher.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:135)上 位于org.atmospher.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:96) 位于org.atmosphere.handler.ReflectorServletProcessor$FilterChainServletWrapper.service(ReflectorServletProcessor.java:317) 位于org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:160) 在org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205)上 位于org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104) 位于org.atmosphere.container.Servlet30ComeSupport.service(Servlet30ComeSupport.java:66) 位于org.atmosphere.cpr.AtmosphereFramework.docomeSupport(AtmosphereFramework.java:2079) 位于org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:211) 位于org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:197) 位于javax.servlet.http.HttpServlet.servic