java - 使用 Postconstruct 方法在应用程序范围类中注入(inject)请求范围 bean 时出现上下文不活动异常

标签 java jboss cdi java-ee-8

当我尝试在应用程序范围 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/

相关文章:

java - 根据请求的主机名在 JBoss 中配置多个 keystore

json - Keycloak/Wildfly 如何将所有控制台日志配置为 JSON 格式

jboss - 带有 RxJava 的 Jersey 客户端与 resteasy 冲突

java - 使用 Restful 和 CDI 协同工作的最佳方式是什么?

java - 我应该从两端关闭套接字吗?

JavaFX 自动调整大小和自动位置

jakarta-ee - 迁移到 Java EE 7 后 CDI 无法工作

java - 通过生产者方法在类中注入(inject) CDI Event<T>

java - super (空): what does this mean?

java - 无法访问 MS Project Server 2013 REST API 服务器 - 授权错误