java ejb3 @PostConstruct

标签 java ejb-3.0

我正在 JBoss 上试验 EJB3,开发无状态 bean。基本上一旦部署了模块,我就需要执行一些与加载应用程序设置相关的操作。 为此,我将一个方法注释为@PostConstruct,据我所知,API 指示容器在 bean 部署后和投入使用之前调用它。 (正确的?) 现在,我很困惑,因为从日志上看,该方法并不是在部署之后简单地调用,而是在调用每个公开的方法之前调用。 我只需要调用该方法一次,而不是每次它收到调用时。什么是最好的方法?

提前致谢

亚历山德罗·伊拉多

最佳答案

无状态 bean 应该就是无状态的。这意味着在使用中,您既不能分辨也不能关心 bean 是从池中提取的还是根据您的请求按需构建的。我很难想象 PostConstruct 如何应用于无状态环境,因为我总是使用该函数来完成构建 bean 的状态。

显然,JBoss 要么放弃无状态 bean 的池化并每次都重新构建它们,要么,如果它使用池化,则将它们视为每次都被重建(因为它们不应该携带状态信息)。实际上我有点惊讶它会调用 PostConstruct。

关于java ejb3 @PostConstruct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1108829/

相关文章:

java - EJB3 带来了哪些特性以及 EJB3 如何与 Spring 框架相结合?

java - 关于 Nashorn - JSObject 的问题

java - Weblogic,带有 ejb3 的 Tibco SSL :javax. jms.JMSSecurityException:无法连接到任何服务器

jakarta-ee - EJB3 : orm. xml : is it possible to have multiple orm. xml 文件?

java - 如何在Spring框架和EJB3之间做出选择

java - 帮助我使用 Stateful beans

java - 不使用注释的 Jackson 多态反序列化

java - 将项目导入到另一个工作区,包括运行配置

jakarta-ee - CommonJ TimerManager 与 EJB3 TimerService

大写字母的 Java 正则表达式