ステートレス EJB を使用する開発目的の REST インターフェイスがあります。次に、別のステートレス EJB を注入します。インスタンスが必要になるたびに、ステートレス EJB がパッシベーションされて再構築されるのではなく、破棄されるというのが私の理解でした。
このロジックを使用して、@PostConstruct を (REST と他のステートレス ejb の両方に) 追加しましたが、どちらも一度しか呼び出されません (ログから推定)。REST レイヤーへの呼び出しを繰り返すと、新しい Bean を作成する代わりに、同じ Bean (およびその状態) が再利用されます。
ステートレス Bean が破棄されない理由として考えられるものは何ですか? それとも、ステートレス EJB のライフサイクルを誤解しているのでしょうか?
EDIT:私が言及している「状態」は、実行を高速化するために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");
}
}