在Tomcat的配置文件server.xml中,Host元素代表虚拟主机,在同一个Engine元素下可以配置多个虚拟主机。例如,有两个公司的Web应用都发布在同一个Tomcat服务器上,可以为每家公司分别创建一个虚拟主机,它们的虚拟主机名分别为:
www.mycompany1.com www.mycompany2.com
这样当Web客户访问以上两个Web应用时,就好像这两个应用分别拥有各自的主机。
此外,还可以为虚拟主机建立别名,例如,如果希望Web客户访问www.mycompany1.com或mycompany1.com都能连接到同一个Web,那么可以把mycompany1.com作为虚拟主机的别名来处理。
下面讲解如何配置www.mycompany1.com虚拟主机。
(1)打开/conf/server.xml文件,会发现在元素中已经有一个名为localhost的元素,可以在它的后面(即后面)加入如下元素:
<Host name="www.mycompany1.com"debug="0"appBase="C:\mycompany1" unpackWARs="true"autoDeploy="true"><alias>mycompany1.com</alias>
<alias>mycompany1</alias>
<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true" />
sever.xml是由一个server -> service ->Engine ->host -> Context组成的四层结构。详细参见http://www.blogjava.net/baoyaer/articles/107278.html或http://www.cnblogs.com/ywl925/archive/2013/02/28/2936926.html
Tomcat Server处理一个http请求的过程 假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回给客户browser
1、Tomcat的所有配置文件都在conf文件夹中,server.xml是核心配置文件
2、80端口是浏览器默认的端口,可以不输入80,其他端口则需要输入