我目前正在测试最新的 JBoss EAP 7.2.1 与之前的7.2.0版本相比,7.2.0在我们的大型企业应用中运行得很好。虽然7.2.0在我们的大型企业应用中运行得很好,但后来的7.2.1现在在启动过程中出现了许多异常,比如这个。
WELD-001477: 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) {
// ...
}
}
我可以解决这个初始 WELD-001477
错误,在EJB模块中删除 @ConversationScoped
但在我的WEB模块中所有使用了 @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版本已经修复了这个问题。