spring启动中EJB SessionContext对象的替换是什么?



我正在将EJB项目迁移到Spring启动项目。我已经成功地将其他注释替换为spring注释,但是SessionContext对象有问题。我的遗留代码在

下面
@Resource
SessionContext sessionContext;
.....
if (some condition) {
sessionContext.setRollbackOnly();
return false;
}

对于这个代码,我得到以下错误

A component required a bean of type 'javax.ejb.SessionContext' that could not be found.

Action:
Consider defining a bean of type 'javax.ejb.SessionContext' in your configuration.

我想你将不得不使用一些不同的功能。

<<p>

setRollbackOnly ()/strong>我经常看到会话上下文用于回滚。在Spring中,您可以将其替换为:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

或用

注释类
@Transactional(rollbackFor = MyException.class) 

所以你可以抛出你的异常从类导致回滚。

getBusinessObject ()

第二个最常用的特性是加载业务对象的方法,例如,我可以在同一个bean中创建一个新事务。在这种情况下,你可以使用Self-inject:
@Lazy private final AccountService self;

和一个带有@Transactional的注释方法。当然,这解决了任何其他需要使用代理对象功能的情况。

其他功能是由Spring中的其他类提供的,但我认为这两个是Java EE世界中最常用的,当迁移时,人们会寻求在Spring中替换它们。

相关内容

  • 没有找到相关文章

最新更新