tomcat总结一

来源:互联网 发布:北电网络破产 编辑:程序博客网 时间:2024/06/05 01:07

在看tomcat相关资料的时候自己作了一点总结,在这里分几个章节记录一下:

通常我们会用到两种connector,一种叫http connector,用来传递http需求的。另一种叫AJP,在我们整合apache与tomcat工作的时候,
apache与tomcat之间就是通过这个协议来互动的。(说到apache与tomcat的整合工作,通常我们的目的是为了让apache获取静态资源,而让tomcat来解析动态的jsp或者servlet.)

org.apache.catalina.startup包
Bootstrap这个类里做了两件事:
 1.指定了3种类型classloader
  2.引导Catalina的启动.

***************************************************
Digester是用来装配tomcat各个容器与组件的。

 一个请求与响应的始末,三个问题:
 1,浏览器中的一个URL是如何被tomcat抓住的,并将请求进行封装?
 2,该URL被tomcat抓住后,是怎样在各个容器间穿梭,最后达到最后的处理点?
 3,被包装的请求对象到达最后的处理点后,又是怎样具体处理的?

  第一个问题主要由service容器里的connector容器完成,将监听端口里的请求封装成CoyoteRequest;
    第二个问题是在service容器里的另一个容器container完成的,在container容器里又有多个子容器(Engin--Host--Context--Wrapper),
              子容器之间由"管道"(pipline)相连,它是用来传送request请求,并且管道中设有阀门(valve),用来过滤request请求,如果request携带
          信息正确,便会到达最后处理点。(在Context处理的request请求就是一个实际的web app了)
  第三个问题主要由Wrapper进行处理,Wrapper会根据request请求的类别(servlet,jsp,静态资源)使用不同
              的Wrapper(InvokerServlet,JspServlet,DefaultServlet)进行处理.

最后将请求和请求参数封装成HttpServletRequest,在与struts2衔接的时候,struts2里的拦截器会将HttpServletRequest解析出来,并传入Action中,这样Action里就存在了参数。

****************************************************
  在generateJava()方法的第一行打一个断点,然后在Eclipse的调试状态下运行Tomcat,等Tomcat运行后,打开我们的浏览器,
  在地址栏中输入http://localhost:8080/examples/jsp/jsp2/el/basic-comparisons.jsp并回车
  上面的generateJava方法是将jsp动态编译至java class,这个方法只是在第一次请求或者Jsp源码发生变化时执行,如果您再次
  在浏览器中发送同样的请求,您将看不到上图的Debug界面,因为该方法不再执行。

*******************************************************
  |---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
  |---work:存放jsp编译后产生的class文件;


myeclipse启动时报错:
严重: Protocol handler pause failed
java.net.ConnectException: Connection refused: connect
之类的问题可能是端口被占用了。可以在任务管理器中将相关进程关掉,如tomcat eclispe javaw等。

********************************************************


0 0