我正在 JBoss 上试验 EJB3,开发无状态 bean。基本上一旦部署了模块,我就需要执行一些与加载应用程序设置相关的操作。 为此,我将一个方法注释为@PostConstruct,据我所知,API 指示容器在 bean 部署后和投入使用之前调用它。 (正确的?) 现在,我很困惑,因为从日志上看,该方法并不是在部署之后简单地调用,而是在调用每个公开的方法之前调用。 我只需要调用该方法一次,而不是每次它收到调用时。什么是最好的方法?
提前致谢
亚历山德罗·伊拉多
最佳答案
无状态 bean 应该就是无状态的。这意味着在使用中,您既不能分辨也不能关心 bean 是从池中提取的还是根据您的请求按需构建的。我很难想象 PostConstruct 如何应用于无状态环境,因为我总是使用该函数来完成构建 bean 的状态。
显然,JBoss 要么放弃无状态 bean 的池化并每次都重新构建它们,要么,如果它使用池化,则将它们视为每次都被重建(因为它们不应该携带状态信息)。实际上我有点惊讶它会调用 PostConstruct。
关于java ejb3 @PostConstruct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1108829/