【Tomcat】JVM,Tomcat,Servlet,Tomcat中的应用。彻底弄懂这些概念之间的联系
2017-03-04 10:53
453 查看
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回送给请求的发送端。
servlet规范就是规范了应用和容器的通信。简单的说,比如你用 SpringMVC 写了一个 web 应用, springmvc 是遵守 servlet 规范的,所以,它可以跑在任何遵循 servlet 规范的容器上,比如,它可以跑在 tomcat 上, tomcat 就是一个 servlet 容器,当然,它也可以跑在 jetty 上。
tomcat 是用 java 语言开发的,所以, tomcat 就是一个 java 应用,需要跑在 JVM 中,就是 java 虚拟机。
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回送给请求的发送端。
servlet规范就是规范了应用和容器的通信。简单的说,比如你用 SpringMVC 写了一个 web 应用, springmvc 是遵守 servlet 规范的,所以,它可以跑在任何遵循 servlet 规范的容器上,比如,它可以跑在 tomcat 上, tomcat 就是一个 servlet 容器,当然,它也可以跑在 jetty 上。
tomcat 是用 java 语言开发的,所以, tomcat 就是一个 java 应用,需要跑在 JVM 中,就是 java 虚拟机。
相关文章推荐
- 弄懂 JRE、JDK、JVM 之间的区别与联系
- 弄懂 JRE、JDK、JVM 之间的区别与联系
- 从项目外包的角度出发,分析为什么要有委托,异步,多线程,事件,委托多播这些概念,之间怎么联系
- socket servlet websocket 概念 区别与联系
- Tomcat与Servlet之间的关系
- servlet基础(Tomcat的配置和应用的建立)
- JSP,servlet容器,Tomcat,servlet容器之间的关系
- Tomcat、Weblogic、Jboss、WebSphere之间的区别联系
- 各种框架(Struts、Spring、Hibernate)及应用服务器(Tomcat、WebSphere)对应的开发环境(JDK、Servlet、JSP)
- 使用监控工具Java VisualVM 远程分析 tomcat应用 JVM使用情况
- tomcat核心概念及应用
- [150312]linux内核,驱动,应用程三者的概念和之间的关系
- Servlet tomcat配置以及应用
- 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。
- file、inode在应用层和驱动层之间的联系
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系
- Android开发:Handler Runnable和Thread之间的区别和联系 应用
- Tomcat与Servlet之间的关系
- android客户端与部署到tomcat的servlet服务器之间实现http通信
- JSP+Servlet+Tomcat应用开发