Transactions 60秒后的EJB远程调用只会导致回滚

Transactions 60秒后的EJB远程调用只会导致回滚,transactions,ejb,websphere,Transactions,Ejb,Websphere,我有一个在IBMWebSphereApplicationServer8中运行的应用程序,它有一个EJB3.0无状态Bean。这个bean调用一个由EJB2无状态bean组成的服务。在for循环中调用第二个bean。这意味着至少要调用300次。该过程发生在一个事务中。 第一个bean被标记为: @TransactionManagement(TransactionManagementType.CONTAINER) @TransactionAttribute(TransactionAttributeT

我有一个在IBMWebSphereApplicationServer8中运行的应用程序,它有一个EJB3.0无状态Bean。这个bean调用一个由EJB2无状态bean组成的服务。在for循环中调用第二个bean。这意味着至少要调用300次。该过程发生在一个事务中。 第一个bean被标记为:

@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
第二个bean:

<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
但我仍然遇到一个问题,我没有找到原因和解决办法。 从第一次调用开始60秒后,服务(方法B)将事务的属性rolebackonly设置为true。这些方法一直运行到最后,但是由于这个原因,数据库中没有保存任何内容-所有内容都被回滚

我找不到一个解决方案来获取有关将其设置为true的组件(容器或数据库)以及其原因的更多信息


我希望我解释的一切都是正确的,任何想法或解决方案都将受到赞赏。

如果设置了应用程序组件事务超时,它将覆盖全局超时值,如上的表1、2所示。 下面是描述如何配置组件事务超时的另一个示例。检查是否将其设置为60,如果是,则增加该值


另外,刚才注意到您提到了这是一个远程EJB调用,所以您还应该查看客户机不活动超时的值,它的默认值为60秒和指定来自远程客户端的事务性请求之间的最大持续时间(秒)。任何超过此超时的客户端不活动时间都会导致此应用程序服务器中的事务回滚。”请参阅第一个链接中的知识中心文档。

非常感谢您的回复。没有“应用程序组件事务超时”“在部署描述符中或在服务器上设置。另一方面,“客户端不活动超时”没有任何意义。但即使如此,我将两台服务器上的值都更改为120秒,但没有任何积极的结果。正如我在第一篇文章中所说,远程ejb是在for循环中调用的,在第一次调用60秒后的第一次调用中,标志已经设置为true。我之所以看到这一点,是因为在远程调用的开始和结束时,我记录了SessionContext.getRollbackOnly()的值。
totalTranLifetimeTimeout="600" 
LPSHeuristicCompletion="ROLLBACK" 
propogatedOrBMTTranLifetimeTimeout="600"