综述
在前面章节中已经看到,使用Bootstrap类来初始化连接器、上下文、包装器以及其它组件。一旦你获得了它们的对象就可以使用set方法来关联它们。例如可以如下初始化连接器和上下文
Connector connector = new HttpConnector();
Context context = new StandardContext();
将连接器和上下文关联起来可以如下实现:
connector.setContainer(context);
可以使用相应的set方法来配置这些对象的属性。例如可以使用setPath和setDocBase方法来设置path和docBase属性。
context.setPath("/myApp") ;
context.setDocBase("myApp");
另外,可以初始化各种组件,然后使用相应的add方法将其添加到上下文容器中。例如,下面是如何在上下文对象中添加生命周期监听器和加载器:
LifecycleListener listener = new SimpleContextConfig();
((Lifecycle) context).addLifecycleListener(listener);
Loader loader = new WebappLoader();
context.setLoader(loader);
一旦必要的关联和添加设置完毕,就可以调用连接器的initialize和start方法和上下文的start方法了。
connector.initialize();
((Lifecycle) connector).start ();
((Lifecycle) context).start();
这种方式来配置应用程序有一个很明显的缺点,所有的东西都是硬编码的。要更改一个组件或者一个属性的值都需要重新编译整个Bootstrap类。幸运的是,Tomcat的设计者选择了一种更优雅的方式来进行配置,使用名为server.xml的XML文档。Server.xml中的每一个元素都被转换为一个Java对象,元素的属性用来设置属性。这样,就可以通过编辑server.xml来改变Tomcat的配置。例如,上下文容器元素就可以这样在server.xml中表示
<context/>
To set the path and docBase properties you use attributes in the XML element:
<context docBase="myApp" path="/myApp"/>
Tomcat使用开源工具Digester来讲XML元素转换为Java对象。Digester将会在本章第一节介绍。
接下来的一节介绍了如何配置一个web应用程序,一个上下文被用来表示一个web应用程序,一次配置初始化该上下文实例即可达到配置该web应用的目的。配置web应用所使用的web应用所使用的XML文件时web.xml,该文件必须存放在该应用程序的WEB-INF目录下面。