在Websphere7环境中,容器被设置为使所有CMT会话bean持续时间超过120秒的任何事务超时。
然而,我一直被要求在我们的EJB中添加一个特性,并且执行它的时间将大于此超时时间(大约20分钟)。由于这是一个一次性功能,我真的不想增加事务超时,因为它会影响所有其他bean。
是否可以声明bean或特定会话bean中的一个方法有自己的超时延迟?
如果这是不可能的,我想我唯一的解决方案是创建一个CMT bean ?
谢谢!
我不知道websphere7,对于Jboss你有类似的东西,也许你会发现类似的websphere7。如果没有,在我看来,你有三个选择。
- 重新构建您的解决方案,以使用MDB对长时间运行的任务进行异步执行
- 用户UserTransaction和setTransactionTimeout设置特定事务的事务超时
- 为该功能创建一个单独的CMT bean,并在xml中指定独占事务超时