当我尝试在应用程序范围 bean 中注入(inject)请求范围 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 注入(inject)到 @ApplicationScoped 中。我在许多具有数百个类的应用程序中这样做,并且它开箱即用。
关于java - 使用 Postconstruct 方法在应用程序范围类中注入(inject)请求范围 bean 时出现上下文不活动异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62848713/