【问题标题】:Tomcat keep webapp api runningTomcat 保持 webapp api 运行
【发布时间】:2014-08-05 11:34:23
【问题描述】:

我正在尝试为 tomcat 7 创建一个 Web 应用程序,但我的问题是我想保持应用程序的整个主干运行,以便我的 servlet 可以调用这些函数。前任。我有我的 com.example.Main 类,其中包含所有实例,例如用户管理器等。但不是在每次 servlet 调用时重新定义主实例,而是为所有 servlet 定义一次。

最好的问候, - 鱼子

【问题讨论】:

  • 所以你有一个类,它上面定义了许多方法,并且你想从许多 servlet 访问它,但你不想在每个 servlet 中执行Main main = new Main()
  • 是的,因为定义所说的 main 和初始化它需要很多时间

标签: java tomcat servlets tomcat7


【解决方案1】:

据我了解,您想要一个单身人士。检查this answer for implementation

但请注意singletons are "evil"。更多的 webapp 方法是不将其作为单例,而是在 ContextLoaderListener 中初始化一次,然后将其作为 ServletContext 属性。然后每个 servlet 都可以从 servlet 上下文中获取它。

【讨论】:

  • 我将如何去做 ContextLoaderListener/ServletContext 而不是 Singleton?
  • “如何”是什么意思? :) 用@WebListener 声明它
  • 我不知道 Java EE 是如何工作的。我刚开始做。
【解决方案2】:

我同意 Bozho - 你似乎在谈论单例,我同意他对使用它们的保留。

如果您确实将其实现为单例,或使用 Bozho 建议的解决方案,请务必了解该类只有一个实例,可能会被许多 servlet 使用同时。因此,有责任确保该类是线程安全的,否则您的应用程序将产生不可靠的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2012-06-11
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2016-05-27
    相关资源
    最近更新 更多