首页 > 解决方案 > JBoss EAP 更新到 7.2.1 后如何处理 WELD-001477?

问题描述

与之前的 7.2.0 版本相比,我目前正在测试最新的JBoss EAP 7.2.1 。虽然 7.2.0 对我们的大型企业应用程序工作得很好,但后来的 7.2.1 现在在启动过程中抛出了许多类似这样的异常:

WELD-001477:带有限定符 [@Any @Default] 的 bean Managed Bean [class package.SomeFacadeBean] 声明了一个钝化范围,但有一个(n)拦截器 [class com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorMandatory 拦截 @ Transactional] 具有非钝化能力依赖项 com.arjuna.ats.jta.cdi.JNDIBean@6f5e65a8

这些 bean 声明如下:

@ConversationScoped
public class SomeFacadeBean implements SomeFacade, Serializable {

    // Simplified example...
    @Transactional
    public void someMethod(Object param) {
        // ...
    }
}

WELD-001477我可以通过删除这里来解决 EJB 模块中的这个初始错误——但是对于我在 WEB 模块中使用方法组合@ConversationScoped的所有 UI bean 的类,会引发同样的错误。@Transactional@ConversationScoped

而且我不能@ConversationScoped在这里真正删除 - 这些是需要该范围的 UI bean。

@ConversationScoped
public class SomeBeanUI implements Serializable {

    // Simplified example...
    @Inject
    private SomeFacade facade;

    private Object anySerializable;

    @Transactional
    public void save() {
        // ...
    }
}

那么如何使用 JBoss EAP 7.2.1 解决这个新问题呢?

标签: javaserializationdependency-injectionjboss-eap-7

解决方案


仅出于完整性考虑...此回归已在 EAP 7.2.3 中修复。


推荐阅读