how tomcat works(第15章: Digester)

综述

在前面章节中已经看到,使用Bootstrap类来初始化连接器、上下文、包装器以及其它组件。一旦你获得了它们的对象就可以使用set方法来关联它们。例如可以如下初始化连接器和上下文

Connector connector = new HttpConnector();

Context context = new StandardContext();

将连接器和上下文关联起来可以如下实现:

connector.setContainer(context);

可以使用相应的set方法来配置这些对象的属性。例如可以使用setPathsetDocBase方法来设置pathdocBase属性。

context.setPath("/myApp") ;

context.setDocBase("myApp");

另外,可以初始化各种组件,然后使用相应的add方法将其添加到上下文容器中。例如,下面是如何在上下文对象中添加生命周期监听器和加载器:

LifecycleListener listener = new SimpleContextConfig();

((Lifecycle) context).addLifecycleListener(listener);

Loader loader = new WebappLoader();

context.setLoader(loader);

一旦必要的关联和添加设置完毕,就可以调用连接器的initializestart方法和上下文的start方法了。

connector.initialize();

((Lifecycle) connector).start ();

((Lifecycle) context).start();

这种方式来配置应用程序有一个很明显的缺点,所有的东西都是硬编码的。要更改一个组件或者一个属性的值都需要重新编译整个Bootstrap类。幸运的是,Tomcat的设计者选择了一种更优雅的方式来进行配置,使用名为server.xmlXML文档。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目录下面。

详情请见:http://docs.google.com/View?id=ddxgftrb_26d6844zfr

原文地址:https://www.cnblogs.com/macula7/p/1960549.html