我有一个用于开发目的的 REST 接口,它支持无状态 EJB。它反过来注入另一个无状态 EJB。我的理解是,每次需要实例时,无状态 EJB 都会被销毁而不是钝化和重建。
使用这个逻辑,我添加了一个@PostConstruct(对 REST 和另一个无状态 ejb),但两者都只被调用一次(从日志中推断)。对 REST 层的重复调用将重用同一个 bean(及其状态!),而不是创建一个新的。
无状态 bean 没有被销毁的可能原因是什么?还是我误解了无状态 ejb 的生命周期?
编辑:我所指的“状态”是 bean 构造以加速执行的临时缓存。也许是一个糟糕的词选择:)
EDIT2:一些骨架代码:
import javax.ejb.Stateless;
import javax.ejb.EJB;
import javax.ws.rs.Path;
@Path("tools")
@Stateless
public class RESTTools {
@EJB
private CatalogueLocal catalogue;
@PostConstruct
public void initialize() {
logger.debug("Initializing REST client");
}
}
@Stateless
@Local(CatalogueLocal.class)
@TransactionManagement(TransactionManagementType.BEAN)
public class Catalogue {
@PostConstruct
public void initialize() {
logger.debug("Initializing catalogue");
}
}