我已经在我的 java EE 应用程序中实现了一个断路器模式,并且因为它拥有一个状态(有多少失败的请求、平均响应时间、锁定/解锁等等),所以我将 inte 设置为@Stateful
. 并且为了避免由于容器锁定而导致序列化出现问题,我添加了@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
并确保所有操作都是线程安全的。
所以它目前看起来像这样:
@Stateful
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class CatalogBreaker extends Breaker {
但我仍然得到。
Caused by: javax.ejb.ConcurrentAccessTimeoutException: WFLYEJB0228: EJB 3.1 FR 4.3.14.1 concurrent access timeout on CatalogBreaker - could not obtain lock within 5000 MILLISECONDS
但是,如果我正确理解了所有内容,则CuncurrencyManagement
注释应该将锁定委托给 bean 而不是容器......并且由于CatalogBreaker
没有任何锁或任何类似的东西,那么我怎么会得到这个错误?