tomcat开发中的一些使用技巧

tomcat的架构中有这样一个接口 org.apache.catalina.ContainerServlet 只要在配置的servlet上实现这个接口,tomcat的web容器在启动初始化servlet的时候就会调用 public void setWrapper(Wrapper wrapper) 接口将 org.apache.catalina.Wrapper 注入到Servlet类中。

tomcat中已经有org.apache.catalina.manager.ManagerServlet 这个类实现了这个接口

public class ManagerServlet
    extends HttpServlet implements ContainerServlet {
//。。。。

 通过Wrapper对象可以取得到web容器中其他几个非常重要的容器级别的对象,如下:

 public void setWrapper(Wrapper wrapper) {

        this.wrapper = wrapper;
        if (wrapper == null) {
            context = null;
            host = null;
            oname = null;
        } else {
            context = (Context) wrapper.getParent();
            host = (Host) context.getParent();
            Engine engine = (Engine) host.getParent();
            try {
                oname = new ObjectName(engine.getName() 
                        + ":type=Deployer,host=" + host.getName());
            } catch (Exception e) {
                // ?
            }
        }

        // Retrieve the MBean server
        mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
        
    }
  1. org.apache.catalina.Context
  2. org.apache.catalina.Wrapper
  3. org.apache.catalina.Host
  4. org.apache.catalina.Engine

这几个对象都能得到,这几个层次关系是 engine包含host,host包含context,context包含wrapper,每一个wrapper对应了一个单独的servlet。

猜你喜欢

转载自mozhenghua.iteye.com/blog/1157063
今日推荐