java - 使用 Postconstruct 方法在应用程序范围类中注入请求范围 bean 时上下文非活动异常
问题描述
当我尝试在应用程序范围 bean 中注入请求范围 bean 时,出现以下错误。
Method threw 'org.jboss.weld.contexts.ContextNotActiveException' exception. Cannot evaluate com.example.flow.txn.TxnMessageProcessor$Proxy$_$$_WeldClientProxy.toString()
代码参考:
@ApplicationScoped
public class TxnMessageObserver {
private static final Logger logger = LoggerFactory.getLogger(TxnMessageObserver.class);
@Inject
private TxnMessageProcessor processor;
//message is observed here
public void postConstruct(@Observes @Initialized(ApplicationScoped.class) Object o) {
logger.info("Subscribing to queue [{}] for msg.", queue);
consumer.subscribe(queue);
}
}
@RequestScoped
public class TxnMessageProcessor {
private static final Logger logger = LoggerFactory.getLogger(TxnMessageProcessor.class);
//all processing happens here
}
我需要处理请求范围内的每条消息。
解决方案
我不知道问题的原因到底是什么。但我可以确认您可以将@ReqeustScoped bean 注入@ApplicationScoped。我在许多具有数百个类的应用程序中这样做,并且开箱即用。
推荐阅读
- nestjs - NestJS + TypeORM 中的多对多关系 - 结果表的自定义名称?
- mysql - 如何在 MYSQL 中的行子集上对列求和
- c# - 如何在 C# 中获取其他用户的文件夹路径?
- node.js - 在一个端点中链接 2 个身份验证令牌
- node.js - React - 400 错误请求 POST
- javascript - 页面布局不随js改变
- vb.net - 如何使 AddRange 类型安全
- visual-studio - 如何恢复/下载 VS2022 Preview 2 版本
- c++ - 在 vs 代码中报告错误,但在 clion 中运行良好
- amazon-web-services - CodeArtifact 的 bitbucket 管道