问题标签 [transactionmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4795 浏览

spring - 休眠事务管理器

我有一个使用spring和hibernate在jboss env中部署的网络应用程序。问题是我的日志中一直有这条消息:

我应该担心吗?所有数据都正确存储在数据库(oracle)中,一切似乎都运行良好。

这是我的配置(数据库相关):

--> --> -->

提前致谢。

0 投票
0 回答
687 浏览

spring - 使用spring框架3、hibernate和websphere事务管理器的惰性异常

我只是将我的 spring 框架升级到 spring 3.1.1,并且我正在使用 websphere 事务管理器。当我尝试访问声明为惰性的模型时,出现以下错误:

[1/15/13 14:30:46:148 WIT] 00000021 LazyInitializ E org.hibernate.LazyInitializationException 无法初始化代理 - 没有会话 org.hibernate.LazyInitializationException:无法初始化代理 - org.hibernate.proxy 没有会话。 AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150) at com .aprisma.product.gcm.common.model.spi.gie.Menu$$EnhancerByCGLIB$$ebdf1c09.getName() 在 com.aprisma.product.gcm.service.integration.impl.SecurityServiceImpl.getMenuTree(SecurityServiceImpl.java:312 ) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:599) at org.springframework.aop.support .AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在org.springframework.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:132) at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:337) at com.ibm.ws.uow.UOWManagerImpl .runUnderNewUOW(UOWManagerImpl.java:1067) at com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:628) at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) at org.springframework .transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:127) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java :202) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.aprisma.product.gcm.service.impl.LoginServiceImpl.getMenuTree(LoginServiceImpl.java:279) 的 $Proxy1104.getMenuTree(Unknown Source)。反射.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。java:45) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect.Method.invoke(Method.java:599) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils .java:318) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在 org.springframework.transaction 的 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)。在 com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java :1067) 在 com.ibm。ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:628) 在 org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 127) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy1335.getMenuTree(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect.Method。调用(方法.java:599) 在 com.aprisma.component.esm.utils.CallUtils.springCall1(CallUtils.java:452) 在 com.aprisma.component.esm.utils.CallUtils.springCall2(CallUtils.java:465) 在 com.aprisma.component .esm.utils.CallUtils.springCall(CallUtils.java:413) 在 com.aprisma.component.esm.utils.CallUtils.call(CallUtils.java:777) 在 com.aprisma.component.esm.delegate.BusinessObjectFactory.callBusinessObject (BusinessObjectFactory.java:275) 在 com.aprisma.component.web2.service.CallBOService.callService(CallBOService.java:9) 在 com.aprisma.product.gcm.retail.web.mvc.AbstractController.callService(AbstractController.java :45) 在 com.aprisma.product.gcm.retail.web.mvc.customer.LoginController.prepareMenuList(LoginController.java:376) 在 com.aprisma.product.gcm.retail.web.mvc.customer.LoginController.login (登录控制器.java:215) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect .Method.invoke(Method.java:599) 在 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 在 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod (AnnotationMethodHandlerAdapter.java:436) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 在 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 在com.aprisma.component.web2。servlet.CustomDispatcherServlet.doDispatch(CustomDispatcherServlet.java:17) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)在 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:738) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java :831) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597) 在 com.ibm.com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)。 ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131) 在 com.aprisma.component.web.filters.UserContextFilter。doFilterInternal(UserContextFilter.java) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188) 在 com.ibm .ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) 在 com.aprisma.component.web.filters.InputSanitationFilter.doFilter(InputSanitationFilter.java) 在 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) 在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) 在 com.ibm.ws。webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest( ServletWrapperImpl.java:179) 在 com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91) 在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864) 在 com.ibm .ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583) 在 com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) 在 com.ibm.ws.http.channel.inbound.impl .HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) 在 com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) 在 com. ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) 在 com.ibm.ws。 tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:984) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) 在 com.ibm.ws.util。 ThreadPool$Worker.run(ThreadPool.java:1604)impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager。 workerRun(WorkQueueManager.java:984) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.爪哇:1604)impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager。 workerRun(WorkQueueManager.java:984) 在 com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.爪哇:1604)

问题仅在我使用 websphere 事务管理器时出现,如果我使用 weblogic 事务管理器,它工作正常。我试图寻找同样的问题,但似乎没有人和我有同样的问题。所以,我想问一下有没有人遇到过同样的问题?有什么解决办法吗?

谢谢你,罗宾

0 投票
6 回答
18453 浏览

spring - 使用 Spring Data JPA、Hibernate 和多事务管理器:未定义名为“transactionManager”的 bean

编辑:对于任何可能对此问题感兴趣的人,我会在问题的末尾提供问题的分析以及相关的解决方案。

我正在为使用 Spring 3.2、Hibernate 4.1、Spring Data JPA 1.3 和 Apache CXF 2.5(特别是 JAX-RS 模块)的 Web 应用程序配置一个模块。我有以下配置(它工作得很好,为简洁起见省略了详细信息):

我的问题是我必须依赖一些定义自己的外部模块PlatformTransactionManager,所以我发现自己同时使用更多的事务管理器。这个问题很容易通过Transactional.html#value()解决,所以无论我需要在哪里使用@Transactional,我都使用我必须用于该事务的事务管理器的名称来限定注释。
我想将我在模块中定义的事务管理器的名称更改为更有意义的名称,以满足外部模块的标准。因此,例如,externalModule1将其经理定义为externalModule1TransactionManager并且我想拥有

这似乎很容易,不幸的是,当我进行此更改时(并且我@Transactional#value()相应地更改了用法,我得到了一个例外。

特别是,我想把注意力集中在

他们的代码看起来像

所以,据我了解,这个配置应该可以工作,为什么它会抛出那个异常?是否需要标准的命名事务管理器?还是因为 cxf?我在同一个应用程序中发现了一些与多个事务管理器相关的问题(示例 1示例2 ),但这些问题中公认的答案推动了我的解决方案。我误解了什么,我做错了什么?
感谢所有愿意阅读这个长问题的人!

编辑根据 Michail 的回答提供完整的解释:使用Spring Data JPA需要定义存储库接口以连接到数据库。someOtherMethod确实在调用我的存储库之一,该存储库定义为:

这看起来还不错,但是查看JpaRepository实现源代码(因此,查看org.springframework.data.jpa.repository.support.SimpleJpaRepository我发现save(以及其他更新方法)带有注释@Transactional。代码来自SimpleJpaRepository

因此,在使用 Spring Data JPA 时,默认事务管理器(名为 的transactionManager)是强制性的。对我的目标不利,但至少我现在知道就是这样!

0 投票
0 回答
475 浏览

spring - HibernateTransactionManager 中的保存点

有两组插入语句,名称为 A 和 B。如果没有异常,则 A 和 B 都被提交。如果在 B 中插入时出现异常,则应单独提交 A。为此,我使用了 HibernateTransactionManager。

我使用rollbackToSavepoint(Object savePoint)了 TransactionStatus 中可用的方法。当 B 中出现异常时,它不会像它所说的那样回滚。它提交在异常发生之前执行的所有查询,即使在使用rollbackToSavepoint()方法时应该回滚它。

我是休眠的新手。

0 投票
4 回答
5197 浏览

java - 为什么即使在 Spring 服务类的第二个方法中传播 = Propagation.REQUIRES_NEW 也会回滚事务?

现在基本设置都很好,我开始尝试交易。Struts+Spring+Hibernate注解事务管理器。这是 Action 中的示例代码,将调用一个服务类:

这是addUser()服务类中的方法:

首先,我调用addUser了 userDao,它会插入一个用户。其次,我addUser2在这个服务类中调用了另一个方法。

而这个会因为 PK 无效而失败。我想第二次调用 ( addUser2) 会失败,但不会影响前一次调用。但是,没有插入用户。

如果我只打电话:

它正在工作,这意味着数据库等基本设置没有错。

任何想法?

0 投票
1 回答
534 浏览

spring - Mule 3.3 spring 3.1 hibernate 3.6 事务管理

我正在开发一个涉及 mule、spring、hibernate 和注释的应用程序。我正在使用 org.springframework.orm.hibernate3.HibernateTransactionManager。现在的问题是:

我在 mule 中有某些组件,它们根据使用休眠的条件将数据记录到数据库中。我使用 @Transactional 插入少量数据,然后在方法范围完成时提交事务。但我想要的行为是:第一个组件根据某些条件插入数据,但事务不应该立即提交,我的第二个组件是一个 java 类应该再次插入一些数据,然后是第三个等等。如果任何一个组件都失败了在所有组件中执行的查询都应该回滚。所有这些组件都是独立的 java 类

我怎样才能实现这种行为。

谢谢你,

0 投票
2 回答
13309 浏览

spring - 有没有办法在 Spring 中定义默认事务管理器

我有一个将 Hibernate SessionFactory 用于一个数据库的现有应用程序。我们正在添加另一个数据库来进行分析。事务永远不会交叉,所以我不需要 JTA,但我确实想将 JPA EntityManager 用于新数据库。

我已经设置了 EntityManager 和新的事务管理器,我已经对其进行了验证,但 Spring 抱怨说我需要验证现有的 @Transactional 注释。我试图找到一种方法来告诉 Spring 使用 txManager 作为默认值。有没有办法做到这一点?否则,我必须将限定符添加到所有现有的 @Transactional 注释中,如果可能的话,我想避免这些注释。

我得到的错误

谢谢

0 投票
2 回答
2363 浏览

java - 在 Hibernate Spring 中添加 TransactionManager

添加事务管理器时出错。怎么了?:/ 很少有可能的答案是缺少一些休眠库。但是,似乎所有这些都确实存在。如何克服这一点?另外我想在我的数据库中添加一些测试数据。在哪个类中插入它更好?谢谢你。

错误:

Dispatcher-Servlet:

道:

服务:

控制器:

添加 aopalliance-1.0.jar 后出现下一个 错误:

解决方案之一是添加<aop:aspectj-autoproxy proxy-target-class="true"/>到 dispatcher-servlet 中。下一个错误:

0 投票
2 回答
10131 浏览

spring - Spring 事务管理器:回滚不起作用

我希望在事务块中执行一些插入查询,如果有任何错误,所有插入都将回滚。

我为此使用MySQL数据库和Spring TransactionManager。表格类型也是InnoDB

我已经按照此处提到的步骤完成了配置。

以下是我的代码(目前只有一个查询)

弹簧配置 xml:

数据源配置:

这段代码工作得很好,并且记录被插入。但是回滚不起作用!它执行回滚语句没有任何错误但没有效果。

谁能指导我哪里出错了?

0 投票
3 回答
6419 浏览

java - 如何在 WebSphere 8.0 上获取 TransactionManager?

我试图在@Singleton SessionBean - EJB 3.1 - 中获取 TransactionManager 来控制我的事务范围,因为我必须通过@PostConstruct 方法访问数据库。如果发生异常,我不能让 Container RollBack 因为它抛出 TransactionRolledbackException: setRollbackOnly 从单例 post 构造方法中调用。

我正在使用 JTA 数据源并定义了 @TransactionManagement(TransactionManagementType.BEAN) 来覆盖对事务的控制。

@Resource 私有事务管理器事务管理器;

当我尝试执行“transactionManager.begin();”时,返回给我一个 NullPointerException。有谁知道如何解决这个问题?

更新:

我正在使用的代码是这样的:

我认为应该在@Resource 注释上添加一个JNDI 地址,这是特定于WebSphere 的,但我真的找不到。

更新:

为什么在容器管理的注入上使用 JNDI?由于我从直接注入中获得了空指针异常,因此尝试像 ex 一样使用。OReilly Enterprise Java Beans 3.1 第 6 版的第 305 页。

试过这个没有成功。

更新

WebSphere 没有得到我们的 bean 注释——不知道为什么——所以注释:

没有工作。因此,编辑了 de ejb-jar.xml 并添加了以下代码:

并且 UserTransaction 工作。感谢您的回答。