【问题标题】:Web app deployment in TomcatTomcat 中的 Web 应用程序部署
【发布时间】:2011-08-11 11:43:16
【问题描述】:

Tomcat 是否为其容器中运行的每个 Web 应用程序使用不同的 Java 虚拟机 (JVM),还是 Tomcat 中的所有 Web 应用程序都运行在同一个 JVM 下?

举个具体的例子:如果 webapps 下的 web 应用程序以编程方式(通过系统属性)启用 JMX,这是否意味着容器中运行的所有 web 应用程序都启用了 JMX?

我相信是这样,但想确认一下。

这个问题来自我在这个线程中的问题:question on tomcat and jmx。对此主题的任何意见表示赞赏。

【问题讨论】:

    标签: java tomcat jakarta-ee jmx


    【解决方案1】:

    Tomcat 在单个 JVM 中运行,因此部署到单个 tomcat 实例的每个应用程序都与其他所有应用程序在同一 VM 中运行。它们有不同的类加载器,因此在这个意义上它们是相互隔离的,但 JVM 是相同的。

    因此,将为该实例中的每个应用程序启用 JVM 范围内启用的任何功能。

    【讨论】:

    • @Joseph:会不会有 2 个不同的应用会使用相同的类加载器?
    • 我不知道发生这种情况的正常情况 - 这会严重违反 Java EE 规范,但这并不能阻止有创造力的程序员不遗余力地搞砸事情向上。但是 Tomcat 本身不会为多个 Web 应用程序使用同一个类加载器,尽管 Web 应用程序显然会共享 parent 类加载器。
    • Tomcat 使用类加载器的层次结构:引导程序、服务器和应用程序。每个应用程序都有自己的类加载器,但它们共享更高的类加载器。
    • 顺便说一句,约瑟夫·奥廷格的回答很到位。我会接受的。
    • 另请注意,您不应依赖观察到的 Tomcat 行为,而是根据规范为 servlet 容器定义的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2012-11-02
    • 2012-12-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多