How Tomcat Work 之Digester之The Applicaition

来源:互联网 发布:centos 7 硬盘分区 编辑:程序博客网 时间:2024/06/10 23:10



这一章节的应用允许你使用一个ContextConfig作为监听器来配置StandardContext对象。其由一个类,BootStrap组成。代码清单如下:



package ex15.pyrmont.startup;import org.apache.catalina.Connector;import org.apache.catalina.Container;import org.apache.catalina.Context;import org.apache.catalina.Host;import org.apache.catalina.Lifecycle;import org.apache.catalina.LifecycleListener;import org.apache.catalina.Loader;import org.apache.catalina.connector.http.HttpConnector;import org.apache.catalina.core.StandardContext;import org.apache.catalina.core.StandardHost;import org.apache.catalina.core.StandardHost;import org.apache.catalina.startup.ContextConfig;public final class Bootstrap {         // invoke: http://localhost:8080/app1/Modern or   // http://localhost:8080/app2/Primitive   // note that we don't instantiate a Wrapper here,   // ContextConfig reads the WEB-INF/classes dir and loads all servlets.   public static void main(String[] args) {       System.setProperty("catalina.base",System.getProperty("user.dir"));       Connector connector = new HttpConnector();       Context context = new StandardContext();       // StandardContext's start method adds a default mapper       context.setPath("/app1");       context.setDocBase("app1");       LifecycleListener listener = new ContextConfig();       ((Lifecycle) context).addLifecycleListener(listener);       Host host = new StandardHost();       host.addChild(context);       host.setName("localhost");       host.setAppBase("webapps");              Loader loader = new WebappLoader();       context.setLoader(loader);       connector.setContainer(host);       try {           connector.initialize();           ((Lifecycle) connector).start();           ((Lifecycle) host).start();           Container[] c = context.findChildren();           int length = c.length;           for (int i=0; i<length; i++) {                Container child = c[i];                System.out.println(child.getName());           }           // make the application wait until we press a key.          System.in.read();          ((Lifecycle) host) .stop();        }        catch (Exception e) {            e.printStackTrace();        }    }}   


总结


Tomcat可以有不同的配置。使用一个server.xml文件的简单配置可以通过使用Digester对象将XML元素转为Java对象完成。另外,一个web.xml文档用于配置一个servlet/jsp的应用程序。Tomcat必须能够解析这个web.xml文档并且基于XML文档中的元素配置一个Context对象。Digester再一次优美的解决了这个问题。


0 0