我真的很难理解tomcat实际运行的位置。它是在JVM中执行的,它执行servlet。或者它在执行servlet或JSP时拥有自己的VM。
提前致谢。
答案 0 :(得分:13)
Tomcat将在JVM中运行,servlet在Tomcat进程内执行(在同一个JVM中)。
运行catalina.sh(或.bat)将启动一个新的JVM供Tomcat运行。如果您需要将Web服务器作为更大应用程序的一部分,您可以在现有JVM中以编程方式加载/运行Tomcat。
答案 1 :(得分:3)
Java提供JVM来运行任何Java应用程序。
Tomcat本质上是一个Java程序,它实现了Servlet容器规范并充当Servlet容器。
这也意味着您需要(至少)Java JRE来运行Tomcat。
答案 2 :(得分:3)
这是一个令人困惑的主题,因为单独的JVM的“外观”有时会与不同的类加载器实例混淆。
Tomcat和你的应用程序(WAR或servlet)共享相同的JVM,但是它们使用独立的类加载器 - 这就是为什么你可以使用不同版本的log4J进行2次WAR,一切都很好。 Here's an article from O'Reilly about the class loader
答案 3 :(得分:0)
Tomcat和它的servlet都在JVM中运行。