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处理一个请求的大致过程如下:
-
假设tomcat监听8080端口,当一个http请求从主机的8080端口发送过来时,tomcat最先获知。
-
tomcat将此请求作为任务加入一个队列中,jvm中有若干工作者线程会从这个队列中获取任务。
-
假设工作线程A取到了这个任务,那么线程A通过分析请求的url,检查已加载的web.xml配置,来判断此请求应该交给应用的哪个servlet处理(假设应用是用servlet实现的)
-
工作线程A调用对应的servlet的方法(service/get/post等),把请求封装成request对象传给servlet
-
此时应用开始干活(实际上干活的还是工作线程,只不过执行的是应用中编写的业务逻辑),解析请求参数,处理业务流程,生成response
-
工作线程A把response回送给请求的发送端。
-
通常情况下,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。 -
eclipse自带编译工具,只需用jre即可(java项目只能运行在jvm上/运行类库) jdk开发工具包
以上是关于tomcat和jvm的关系的主要内容,如果未能解决你的问题,请参考以下文章