一、从范例开始
在开始分析之前,我们先使用Tomcat组件来组装一个完整的WebContainer。
1)准备好目录结构
准备好如下目录结构
2)范例(注意如下的代码说明部分)
package ray.tomcat.test; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.StandardEngine; import org.apache.catalina.core.StandardHost; import org.apache.catalina.core.StandardService; import org.apache.catalina.startup.HostConfig; public class TomcatMainV5 { public static void main(String[] args) throws Exception { // 设置基目录,使用这种方式貌似不够幽雅 System.setProperty("catalina.base", "C:/tomcattest/"); // Connector Connector connector = new Connector("HTTP/1.1"); connector.setPort(8080); // 请求处理器(Engine+Host) // Host StandardHost standardHost = new StandardHost(); standardHost.setName("localhost"); standardHost.setAppBase("webapps"); // HostConfig负责解析Context配置,并将Context加入到Host中, standardHost.addLifecycleListener(new HostConfig()); // Engine StandardEngine standardEngine = new StandardEngine(); standardEngine.setName("Catalina"); //此处可以看到Host是Engine的Child standardEngine.addChild(standardHost); standardEngine.setDefaultHost("localhost"); // Connector+请求处理器 组装成webserver StandardService standardService = new StandardService(); standardService.setName("Catalina"); //设置接收请求Connector,可支持多个Connector standardService.addConnector(connector); //设置请求处理器 standardService.setContainer(standardEngine); // 开始初始化 standardService.start(); while (true) { Thread.sleep(60000); System.out.println("still active"); } } }
3)访问http://localhost:8080/examples,可以看到examples应用生效了
二、总体结构预览
从如上的范例,我们大概可以对Tomcat的主要组成有了基本的了解,包括其他一些在如上无法反映出来的组件,Tomcat由如下组件组成
1)请求连接接收和分发组件
2)请求处理组件
3)组合组件
三、结束语
本篇通过一个范例对Tomcat的主体结构做一个预览,具体的细节我们在后面的篇章《生命期控制结构》、《请求处理结构》中更详细地分析。