【发布时间】:2009-06-18 12:30:38
【问题描述】:
我真的很困惑 tomcat 实际运行的位置。它是否在执行 servlet 的 JVM 内部执行。或者它有自己的虚拟机来执行 servlet 或 JSP。
提前致谢。
【问题讨论】:
我真的很困惑 tomcat 实际运行的位置。它是否在执行 servlet 的 JVM 内部执行。或者它有自己的虚拟机来执行 servlet 或 JSP。
提前致谢。
【问题讨论】:
Tomcat 将在 JVM 中运行,而 servlet 在 Tomcat 进程中执行(在同一个 JVM 中)。
运行 catalina.sh(或 .bat)将为运行 Tomcat 启动一个新的 JVM。如果您需要将网络服务器作为更大应用程序的一部分,您可以在现有 JVM 中以编程方式加载/运行 Tomcat。
【讨论】:
Java 提供 JVM 来运行任何 Java 应用程序。
Tomcat 本质上是一个 Java 程序,它实现了 Servlet 容器规范并充当 Servlet 容器。
这也意味着您需要(至少)Java JRE 来运行 Tomcat。
【讨论】:
这是一个令人困惑的主题,因为单独的 JVM 的“外观”有时会与不同的类加载器实例混淆。
Tomcat 和您的应用程序(WAR 或 servlet)共享相同的 JVM,但它们使用独立的类加载器 - 这就是为什么您可以使用不同版本的类似 log4J 的 2 个 WAR 并且一切都很好。 Here's an article from O'Reilly about the class loader.
【讨论】:
Tomcat 和它的 servlet 都在 JVM 中运行。
【讨论】: