使用相同静态方法的多个无状态Bean

时间:2012-05-02 02:53:59

标签: java static ejb

我在使用无状态EJB时遇到了一个问题。我希望在该EJB中使用特定的静态方法,但这种方法非常重要并且具有静态依赖性。

正如我们所知,无状态会话bean的实例是根据需求(一个或多个)创建的。那么我怎么能确定所有EJB都使用该静态方法的单个副本。我不确定,但我认为每个使用静态方法的不同类都会加载不同的类副本,然后执行静态方法的不同副本。

我不能依赖单例EJB,因为它不能保证只剩下一个副本,因为服务器需要多个JVM。单例EJB的不同副本将存在于不同的JVM中。

提前致谢。

1 个答案:

答案 0 :(得分:1)

静态方法是每个类一个,即使您创建了该类的数千个实例,所有这些实例只能看到静态方法的一个副本。

现在按照规范,您的EJB中不应该有静态方法,如果您想要静态方法,则应考虑将其作为实用程序的一部分移动,或者将其设置为非静态方法。

来自规范:

  

EE.5.2.3注释和注入

     

如以下部分所述,某个领域或方法   可以注释容器管理的组件类以请求它   注入应用程序组件环境中的条目   班级。本章中描述的任何类型的资源都可以   被注射也可以使用中的条目请求注入   与每种资源类型对应的部署描述符。   该字段或方法可以具有任何访问限定符(公共,私有,   等等。)。对于除应用程序客户端主类之外的所有类,   字段或方法不能是静态的。