JBoss EAP更新到7.2.1后如何处理WELD-001477?
How to deal with WELD-001477 after JBoss EAP update to 7.2.1?
我目前正在测试最新的 JBoss EAP 7.2.1 与之前的 7.2.0 版本的对比。虽然 7.2.0 对于我们的大型企业应用程序来说工作得很好,但后来的 7.2.1 现在在启动期间会抛出许多类似这样的异常:
WELD-001477: The bean Managed Bean [class package.SomeFacadeBean] with
qualifiers [@Any @Default] declares a passivating scope but has a(n)
Interceptor [class
com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorMandatory
intercepts @Transactional] with a non-passivation-capable dependency
com.arjuna.ats.jta.cdi.JNDIBean@6f5e65a8
这些 bean 是这样声明的:
@ConversationScoped
public class SomeFacadeBean implements SomeFacade, Serializable {
// Simplified example...
@Transactional
public void someMethod(Object param) {
// ...
}
}
我可以通过在此处删除 @ConversationScoped
来解决 EJB 模块中的初始 WELD-001477
错误 – 但是对于 WEB 模块中的所有 UI beans 都会抛出同样的错误它使用 @Transactional
方法结合 @ConversationScoped
用于他们的 类.
我真的不能在这里删除 @ConversationScoped
– 这些 UI beans 需要那个范围。
@ConversationScoped
public class SomeBeanUI implements Serializable {
// Simplified example...
@Inject
private SomeFacade facade;
private Object anySerializable;
@Transactional
public void save() {
// ...
}
}
那么如何使用 JBoss EAP 7.2.1 解决这个新问题?
为了完整起见...此回归已在 EAP 7.2.3 中修复。
我目前正在测试最新的 JBoss EAP 7.2.1 与之前的 7.2.0 版本的对比。虽然 7.2.0 对于我们的大型企业应用程序来说工作得很好,但后来的 7.2.1 现在在启动期间会抛出许多类似这样的异常:
WELD-001477: The bean Managed Bean [class package.SomeFacadeBean] with qualifiers [@Any @Default] declares a passivating scope but has a(n) Interceptor [class com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorMandatory intercepts @Transactional] with a non-passivation-capable dependency com.arjuna.ats.jta.cdi.JNDIBean@6f5e65a8
这些 bean 是这样声明的:
@ConversationScoped
public class SomeFacadeBean implements SomeFacade, Serializable {
// Simplified example...
@Transactional
public void someMethod(Object param) {
// ...
}
}
我可以通过在此处删除 @ConversationScoped
来解决 EJB 模块中的初始 WELD-001477
错误 – 但是对于 WEB 模块中的所有 UI beans 都会抛出同样的错误它使用 @Transactional
方法结合 @ConversationScoped
用于他们的 类.
我真的不能在这里删除 @ConversationScoped
– 这些 UI beans 需要那个范围。
@ConversationScoped
public class SomeBeanUI implements Serializable {
// Simplified example...
@Inject
private SomeFacade facade;
private Object anySerializable;
@Transactional
public void save() {
// ...
}
}
那么如何使用 JBoss EAP 7.2.1 解决这个新问题?
为了完整起见...此回归已在 EAP 7.2.3 中修复。