tomcat和jvm的关系

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat和jvm的关系相关的知识,希望对你有一定的参考价值。

1.tomcat和jvm的关系

tomcat是servlet容器(jsp和servlet);tomcat由Java开发,所以必须运行在jvm上;  tomcat和tomcat中的应用(即webapps下的war包)是运行在同一个jvm中的,但分工不同;

分析:
tomcat的角色是“调度员”,而你的应用的角色是“工作者”,tomcat处理一个请求的大致过程如下:

  1. 假设tomcat监听8080端口,当一个http请求从主机的8080端口发送过来时,tomcat最先获知。

  2. tomcat将此请求作为任务加入一个队列中,jvm中有若干工作者线程会从这个队列中获取任务。

  3. 假设工作线程A取到了这个任务,那么线程A通过分析请求的url,检查已加载的web.xml配置,来判断此请求应该交给应用的哪个servlet处理(假设应用是用servlet实现的)

  4. 工作线程A调用对应的servlet的方法(service/get/post等),把请求封装成request对象传给servlet

  5. 此时应用开始干活(实际上干活的还是工作线程,只不过执行的是应用中编写的业务逻辑),解析请求参数,处理业务流程,生成response

  6. 工作线程A把response回送给请求的发送端。

  7. 通常情况下,tomcat启动时候使用的jdk的路径默认为环境变量里配置的JAVA_HOME;
    修改默认jdk:我们都知道启动tomcat可以通过运行bin下的startup.bat,startup.bat会调用catalina.bat文件,而catalina.bat会调用setclasspath.bat文件来获取JAVA_HOME和JRE_HOME这两个环境变量的值,因此若要在tomcat启动时指向特定的JDK,则需在setclasspath.bat文件的开头处加上JAVA_HOME和JRE_HOME。

  8. eclipse自带编译工具,只需用jre即可(java项目只能运行在jvm上/运行类库) jdk开发工具包

以上是关于tomcat和jvm的关系的主要内容,如果未能解决你的问题,请参考以下文章

jvm容器的关系

shell脚本调度 Tomcat 启动停止

Tomcat性能优化及JVM内存工作原理

Tomcat配置JVM参数步骤

我就改了一下参数,竟然让Tomcat和JVM的性能提升了两倍!

JVM虚拟机详解+Tomcat性能优化