标签:api 相同 pat listener listen 因此 学习 ase site
在之前所学习关于启动简单的Tomcat部分实现的代码中,我们使用一个启动类Bootstrap类 来实例化连接器、servlet容器、wrapper实例、和其他组件,然后调用各个对象的set方法将他们关联起来,例如。要实例化一个连接器 和 一个 servlet容器,可以使用下列代码
// 初始化一个连接器 Connector connector = new HttpConnector(); // 初始化一个Context容器 Context context = new StandardContext();
然后在使用下面的代码将它们关联起来
connector.setContainer(context);
当然了 如果使用了服务器和服务组件虽然 不需要上面这一步 但是 还是需要其他set资源
接着在调用各个对象的set方法为其设置各种属性,例如可以用Context实例的setPath 和 setDocBase方法设置其path 和 docBase属性,
// 设置根路径 从 浏览器请求 该Context的地址 也就是 /app1 context.setPath("/app1"); // 设置根文件夹 context.setDocBase("app1");
然后,可以通过实例化各种组件,并调用Context对象调用响应的add方法将这些组件添加到Context对象中,例如下面的diamante展示如何为Context对象添加一个生命周期监听器 和一个载入器 和 添加子容器
// 给StandardContext 创建一个 配置监听器 LifecycleListener listener = new SimpleContextConfig(); ((Lifecycle) context).addLifecycleListener(listener);
context.addChild(wrapper1);
context.addChild(wrapper2);
Loader loader = new WebappLoader(); context.setLoader(loader);
在完成关联 和添加组件的所有必要操作之后,就可以调用连接器的initialize方法和 start方法,以及servlet容器的start方法来启动整个应用程序,
connector.initialize();
((Lifecycle) connector).start();
((Lifecycle) context).start();
这种配置应用程序的方法有一个明显缺陷,即所有的配置都必须硬编码,调整组件配置或属性值都 必须要要重新编译Bootstrap类,幸运的是,Tomcat的设计者使用了一种更加优雅的配置方式,即使用一个名为server.xml的XML文档来对应用程序进行配置,server.xml文件中的每个元素都会转化为一个java对象,元素的属性会用于设置java对象的属性,这样,就可以通过简单的编辑server.xml文件来修改Tomcat的配置,例如 server.xml文件中的Context元素表示一个Context实例:
<context/>
要为Context实例设置path属性 和 docBase属性,可以使用这样的配置:
<context docBase="myApp" path="/myApp"/>
Tomcat使用了开源库Digester来将XML文档中的元素转化成java对象,
由于一个Context实例表示一个Web应用程序,因此配置Web应用程序是通过对已经实例化的Context实例进行配置的,用来配置Web应用程序的XML文件的名称是web.xml,该文件位于Web应用程序的WEB-INF目录下。
Digester是Apache软件基金会的Jakarta项目下的子 Commons项目下的一个开源项目,可以从http://jakarta.apache.org/commons/digester/下载Digester库,Digester API 包含3个包,三者都被打包到commons-digester.jar文件中。
org.apahce.commons.figester.xmlrules; 该包 为Digester库提供了一些规则继续XML的定义;
org.apahce.commons.digester.Digester类时Digester库中的主类,该类用于解析XML文档。对于XML文档中的每个元素,Digester对象都会检查它是否要做事先预定义的事件。在调用DIgester对象的parse方法之前,程序员要定义好Digester对象要执行哪一些操作。
那么如何定义在Digester对象遇到某个XML元素时它应该执行什么动作呢?很简单,程序员要先定义好模式,然后将每个模式与一条或者多条规则相关联,XML文档中根元素的模式与元素的名字相同。
标签:api 相同 pat listener listen 因此 学习 ase site
原文地址:https://www.cnblogs.com/ChenD/p/10158947.html