在会话bean代码上使用静态变量是不可能的。这种限制是任意的还是基本的?为什么?
祝你好运
答案 0 :(得分:13)
正如FAQ on EJB restrictions中所述,使用EJB的一个限制是:
企业bean不应该读取或写入非最终的静态字段
在discussion on static fields中进一步扩展:
EJB中不允许使用非最终静态类字段,因为这些字段使企业bean难以或无法分发。静态类字段在特定类的所有实例之间共享,但仅在单个Java虚拟机(JVM)中共享。更新静态类字段意味着在类的所有实例之间共享字段值的意图。但是,如果一个类同时在多个JVM中运行,那么只有在与更新实例相同的JVM中运行的那些实例才能访问新值。换句话说,如果在单个JVM中运行,则非最终静态类字段的行为将与在多个JVM中运行时的行为不同。 EJB容器保留了跨多个JVM(在同一服务器或任何服务器集群上运行)分发企业bean的选项。不允许使用非最终静态类字段,因为企业bean实例的行为会有所不同,具体取决于它们是否已分发。
如果这些字段标记为final,则可以使用静态类字段。由于无法更新最终字段,因此容器可以分发企业bean的实例,而无需担心这些字段的值变得不同步。
答案 1 :(得分:5)
这是根本的。根据{{3}},
EJB中不允许使用非最终静态类字段,因为这些字段使企业bean难以或无法分发。静态类字段在特定类的所有实例之间共享,但仅在单个Java虚拟机(JVM)中共享。 * 强>
答案 2 :(得分:1)
static
对于所有对象的类OR来说都是唯一的。
现在,javabeans
应该包含特定于用户的数据,static
字段对这些字段没有任何意义。
一个用户编辑变量,蚂蚁也会为所有其他用户更新。 (免费 :-))。
但是,如果您希望这些行为具有静态行为(即为所有用户使用相同的数据),则为此目的application
。