在 Java EE 中使用静态对象

Using Static objects in Java EE

我的 EE 应用程序一直存在问题,我相信我已经找到了根本原因 - 静态对象在 tomcat webapp 的所有会话中都可用并且不会消失。因此,我需要调整我的代码,以便每个会话都有唯一的对象。

我有几个 类 可以扩展搜索。 搜索目前有

public static Parser parse;

作为一个字段,我在我的代码中引用它。

我的许多扩展搜索的其他 类 创建了 50 次左右,每当我需要使用 Parser 对象时,我只需调用 super.getParse()。我想避免制作一个新的,因为它是一个缓慢的过程。

创建单个 Parser 对象并在我的代码周围传递它而不是静态的正确方法是什么?

非常感谢任何建议或指导。

如果你真的需要一个唯一的对象,要么使用同步访问器,要么使用线程局部变量。

请注意,如果所有查询都需要访问该唯一对象,使用同步访问器可能会降低应用程序的吞吐量。在这种情况下,线程局部变量(即不是那么唯一,但在会话范围内是唯一的)将是更好的解决方案。

http://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html

你正在寻找单例模式,你可以在这里找到参考

这里要做什么:

  • 消除物体的静电

  • 将对象放入用户会话

像这样每个用户在他的会话中都有他的对象

看到这可能有帮助