首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring boot中EJB SessionContext对象的替换是什么?

spring boot中EJB SessionContext对象的替换是什么?
EN

Stack Overflow用户
提问于 2021-10-21 06:09:38
回答 1查看 98关注 0票数 0

我正在将一个EJB项目迁移到Spring boot项目。我已经成功地将其他批注替换为spring批注,但SessionContext对象有问题。我的遗留代码如下

代码语言:javascript
复制
@Resource
SessionContext sessionContext;
.....
if (some condition) {
    sessionContext.setRollbackOnly();
    return false;
}

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

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

发布于 2021-10-22 12:59:31

我认为你必须使用一些不同的功能。

setRollbackOnly()

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

代码语言:javascript
复制
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

或使用注解类

代码语言:javascript
复制
@Transactional(rollbackFor = MyException.class) 

因此,您可以从类中抛出异常以导致回滚。

getBusinessObject()

第二个最常用的功能是加载业务对象的方法,例如,我可以在同一个bean中创建一个新事务。在这种情况下,您可以使用Self-inject:

代码语言:javascript
复制
@Lazy private final AccountService self;

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69656696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档