当前位置: 首页 > 知识库问答 >
问题:

@Singleton@Startup@PostConstruct方法保证在EJB可用于客户端调用之前返回?

彭宜人
2023-03-14

websphere8.0上运行的javaee6应用程序的上下文中,在执行任何业务方法之前,我需要执行许多启动任务。为此使用@Startup@Singletonbean似乎是一个很有前途的解决方案。然而,我并不完全清楚应用程序生命周期到底是什么样子。EJB 3.1规范规定了以下内容:

默认情况下,容器负责决定何时初始化单例bean实例。但是,bean开发人员可以选择性地配置单例以进行快速初始化。如果启动注释出现在Singleton bean类上,或者如果Singleton已通过部署描述符指定为需要立即初始化,则容器必须在应用程序启动序列期间初始化Singleton bean实例。容器必须在将任何客户端请求传递到应用程序中的任何企业bean组件之前初始化所有此类启动时单例。

>

说到客户机请求,在这个上下文中,带有@scheduled注释的EJB方法的计划执行是否算作一个?

我需要保证在应用程序启动时执行一些代码,然后才能运行应用程序的各种EJB中的任何业务方法,无论是通过客户端调用还是计划执行。在@Singleton的@PostConstruct方法中运行启动代码是否提供了这样的保证?如果没有,有没有其他方法可以保证这种行为?

共有1个答案

尉迟兴修
2023-03-14
  1. 是的,容器等待模块(EJB应用程序)中所有@Startupbean的@PostConstruct方法返回,然后才允许任何客户端请求。
  2. 是的,这是WebSphereApplication Server中的情况,正如知识中心中的开发单例会话bean主题所暗示的那样,该主题表示单例bean中的PostConstruct方法可以创建EJB计时器[...]但是,为了避免死锁,PostConstruct方法不能等待EJB计时器运行”。换句话说,定时器回调调用将等待@PostConstruct方法完成,因此@PostConstruct方法不能等待定时器回调调用完成。
 类似资料:
  • 问题内容: 我对此设置有问题,甚至无法查看日志。 这是我的 EJB: 的: Maven pom: 问题答案: 您具有无效的bean类型作为@DependsOn的属性。DependsOn用于表达两个Singleton会话Bean之间的依赖性,而不是Singleton和Stateless之间的依赖性。您应该将SchedulerEJB更改为Singleton或删除依赖项。 如果您决定将Scheduler

  • 我现在刚到Spring。我试图遵循调用PostConstruct和BeanPostProcessor的顺序。 根据我所学,以下是顺序:- null null SpringConfig文件foo.xml删除了beans标记上下文:component-scan base-package=“SpringTest” 回应 初始化MySpring构造函数 初始化ApplicationContext Post

  • 问题内容: 构造bean之后,我想使用EntityManager从数据库中检索数据。在构造函数中是不可能的,因为EntityManager是在调用构造函数之后注入的。所以我试图用@PostConstruct注释的方法来做。根据API,在完成所有注入后将调用PostConstruct方法。执行查询是可行的,但是它总是返回一个空列表。如果我在其他方法中使用相同的查询,它将返回正确的结果。有人知道,为什

  • 问题内容: 假设我正在定义一个缓存bean,它将在启动应用程序时初始化,并以固定的间隔刷新,如下所示: 即使我未设置初始延迟,也可以确保@PostConstruct下的initializeCache()方法在第一次调度的refreshCache()调用之前立即执行吗? 问题答案: 是的,带有注解的方法可以保证首先执行。 的注释由活化ScheduledAnnotationBeanPostProces

  • 使用GWT 2.5.0,我想使用客户端验证和编辑器。在尝试传递ConstraintViolationjava.util时,我遇到了以下错误。设置为EditorDriver,如下所示。 < code >方法setConstraintViolations(Iterable 我能找到的唯一一篇相关帖子是问题6270! 下面是一个使用Person编辑器打开PopUpDialog的例子,它允许您指定一个名称

  • 我试图使用JBoss7.1.1中的JNDI从远程客户端调用,但我得到了一个异常: 我使用的是jboss的安全机制,并且我已经通过add-user.bat添加了用户,还有带有用户名和密码的jboss-ejb-client.properties文件,但仍然会得到异常。我遵循了链接的示例集:使用JNDI从远程客户端进行EJB调用,当我不使用安全机制时也是如此,但是当我使用安全机制时,就会出现错误 你错过