【发布时间】:2012-10-01 13:38:57
【问题描述】:
我正在使用 Glassfish 服务器。 @LocalBean 似乎在服务器启动时被初始化。对于其他 bean,它们在查找时正确初始化。这是 LocalBean 的正确行为吗?
【问题讨论】:
-
提醒一下:如果 bean 没有实现任何业务接口并且没有有 LocalBean,LocalBean 会为您提供相同的视图。
标签: java-ee-6 glassfish-3 ejb-3.1
我正在使用 Glassfish 服务器。 @LocalBean 似乎在服务器启动时被初始化。对于其他 bean,它们在查找时正确初始化。这是 LocalBean 的正确行为吗?
【问题讨论】:
标签: java-ee-6 glassfish-3 ejb-3.1
没有规则说@LocalBean 应该被急切地初始化而其他人不应该。由容器提供者决定何时应该初始化特定的 bean。
在初始化 bean 时唯一可以控制的情况是使用 @Singleton EJB 和 @Startup 注释。这将强制容器提供者在服务器启动期间创建单例 bean 的实例。这是放置初始化逻辑的好地方。
对于 Glassfish,您观察到的行为可能是正确的,但我不会对此进行转发,因为其他容器提供商可能会选择不同的方法。
【讨论】:
@LocalBean 并不是一种特殊的 EJB——它只是一种特殊的视图,所以它不会改变 EJB 的语义。