`
easyhaohao
  • 浏览: 13700 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Tomcat4 简单wrapper责任链

 
阅读更多
TOMCAT4容器的责任链
public class SimpleWrapper implements Wrapper, Pipeline {



  private String servletClass;
  private SimplePipeline pipeline = new SimplePipeline(this);
  protected Container parent = null;
  
  public void invoke(Request request, Response response)
    throws IOException, ServletException {
    pipeline.invoke(request, response);
  }

  public Valve getBasic() {
    return pipeline.getBasic();
  }

  public void setBasic(Valve valve) {
    pipeline.setBasic(valve);
  }

  public Valve[] getValves() {
    return pipeline.getValves();
  }

  public void removeValve(Valve valve) {
    pipeline.removeValve(valve);
  }

}




public class SimplePipeline implements Pipeline {

  public SimplePipeline(Container container) {
    setContainer(container);
  }
  protected Valve basic = null;
  
  protected Container container = null;
  protected Valve valves[] = new Valve[0];



  public void addValve(Valve valve) {
    if (valve instanceof Contained)
      ((Contained) valve).setContainer(this.container);

    synchronized (valves) {
      Valve results[] = new Valve[valves.length +1];
      System.arraycopy(valves, 0, results, 0, valves.length);
      results[valves.length] = valve;
      valves = results;
    }
  }

  public void invoke(Request request, Response response)
    throws IOException, ServletException {
    
    (new SimplePipelineValveContext()).invokeNext(request, response);
  }
  protected class SimplePipelineValveContext implements ValveContext {

    protected int stage = 0;
    public void invokeNext(Request request, Response response)
      throws IOException, ServletException {
      int subscript = stage;
      stage = stage + 1;
   
      if (subscript < valves.length) {
        valves[subscript].invoke(request, response, this);
      }
      else if ((subscript == valves.length) && (basic != null)) {
        basic.invoke(request, response, this);
      }
      else {
        throw new ServletException("No valve");
      }
    }
  }
}




分享到:
评论

相关推荐

    基于平均值余量的Wrapper扫描链平衡算法

    基于平均值余量的Wrapper扫描链平衡算法 本文详细介绍了扫描链的测试访问机制的设计,提出了一种新的Wrapper扫描链平衡算法,以缩短IP核测试时间。该算法首先计算Wrapper扫描链长度的平均值,然后结合特定的余量值...

    JavaServiceWrapper将Tomcat写成系统服务

    然后,将`E:\wrapper\bin`下的`wrapper.exe`和`wrapper.dll`文件复制到`D:\Tomcat\bin\win32`目录,同时将`wrapper.jar`复制到`D:\Tomcat\bin`。 4. 创建三个关键文件: - `InstallService.bat`:用于安装Tomcat...

    使用JavaServiceWrapper设置tomcat作为linux服务并且开机自动启动.pdf

    ### 使用Java Service Wrapper设置Tomcat作为Linux服务并实现开机自动启动 #### 一、概述 在部署基于Java的应用服务器时,通常需要将Tomcat配置为系统服务,以便于管理和维护。传统的做法是通过编写shell脚本来...

    resin4+wrapper green

    Resin4+Wrapper Green是一个专为简化Resin4部署而设计的解决方案,它允许你在不依赖.NET组件的情况下启动和管理Resin服务器。Resin是一款高效、轻量级且功能强大的Java应用服务器,常用于托管Java web应用程序。...

    tomcat报错:Wrapper cannot find servlet class ...问题解决

    在使用Apache Tomcat服务器进行Web应用开发和部署的过程中,可能会遇到一种常见的错误:“Wrapper cannot find servlet class ...”。这个错误信息表明Tomcat服务器无法找到你指定的Servlet类或该Servlet类所依赖的...

    简单的Tomcat源码实现

    4. **容器结构**:Tomcat有多个级别的容器,包括Engine(引擎)、Host(主机)、Context(上下文)、Wrapper(Servlet容器),它们分别对应不同的Web应用范围。 5. **线程模型**:Tomcat使用基于Executor的线程池来...

    简单的tomcat实现1

    4. Web应用部署:在Tomcat中,Web应用通常以WAR文件形式部署,解压后放在webapps目录下。每个Web应用有自己的Context配置,定义了Servlet映射、欢迎页面、错误处理等信息。手写Tomcat时,我们需要实现解析WEB-INF/...

    Java Service Wrapper使用总结

    Java Service Wrapper 是一种可以将 Java 应用程序发布为可安装的服务的解决方案,它提供了一种简单的方式来将 Java 应用程序打包成一个独立的服务。下面是 Java Service Wrapper 使用总结的详细说明: 概述 Java ...

    名为责任链或者拦截器或者过滤器的简单模拟

    以上的这些功能,通过一种名为责任链或者拦截器或者过滤器(语义上的区别而技术上没有什么区别,知道做了什么就行了)的设计模式可以实现,那么就来看看什么是责任链的设计模式。 以下内容参考北京尚学堂的马士兵...

    Tomcat源码学习:一个最简单的“Tomcat”

    【标题】"Tomcat源码学习:一个最简单的‘Tomcat’",这篇博客主要探讨的是如何通过学习Tomcat的源代码来理解这个流行的开源Java Servlet容器的工作原理。Tomcat是Apache软件基金会的一个项目,它是Java Web应用...

    xml4wrapper_3.9.1.7z

    在`xml4wrapper_3.9.1.7z`这个压缩包中,包含了`xml4wrapper`库的源代码或编译好的二进制文件,以及可能的示例、文档和测试用例。开发者可以通过解压文件,根据提供的说明文档进行编译和集成,以利用`xml4wrapper`的...

    tomcat源码 tomcat本来就是开源的

    4. **参与社区讨论**:加入Tomcat的技术论坛或者邮件列表,与其他开发者交流心得体验,解决遇到的问题。 5. **实践应用**:将所学知识应用于实际项目中,不断巩固和提升自己的技能水平。 #### 五、Tomcat核心组件...

    tomcat的工作原理

    从Tomcat 4到Tomcat 5,其架构经历了显著的变化,尤其是对Servlet API的升级和对新标准的支持。Tomcat 5引入了更为模块化的架构,使得扩展性和性能都得到了提升。然而,无论版本如何变化,Tomcat的核心理念——高效...

    wrapper-linux-x86-64-3.5.55 社区版

    4. `lib`目录:可能包含Wrapper运行所需的库文件。 5. `bin`目录:可能包含启动和管理Wrapper的脚本。 总的来说,"wrapper-linux-x86-64-3.5.55 社区版"是Linux环境中的一款强大工具,通过它可以轻松地管理和监控...

    QueryWrapper 常用用法

    QueryWrapper 常用用法

    SpringBoot 使用Java Service Wrapper 部署Windows服务

    SpringBoot通过默认配置、内嵌Servlet容器(如Tomcat或Jetty)以及自动配置特性,使得创建和运行微服务变得极其便捷。它极大地减少了传统Spring项目中的XML配置,而是依赖于Java配置和类路径扫描。 接下来,我们...

    传智Tomcat(全)下载地址

    4. **配置文件**:Tomcat的主要配置文件有server.xml、web.xml和context.xml等,这些文件位于conf目录下,可以通过修改它们来定制Tomcat的行为。 ### Tomcat的安全性 Tomcat的安全性主要体现在以下几个方面: 1. ...

    springboot使用wrapper安装windows服务

    Wrapper是一个名为`TNT4J-Wrapper`的开源工具,它可以将任何Java应用程序转换为一个独立的服务,适用于Windows、Linux、Unix等多种操作系统。Wrapper提供了一个配置文件,允许我们定制服务的行为,如启动参数、日志...

    tomcat 架构 分析

    在深入分析Tomcat的架构之前,需要了解Tomcat是Apache Jakarta项目中的一个核心项目,是一个免费的开源Servlet容器。它主要用于作为独立服务器或集成到Web服务器中,如Apache和IIS等。作为Web服务器,Tomcat负责解析...

    mybatis-plus QueryWrapper条件查询器

    MyBatis-Plus的QueryWrapper是其强大的查询构造器,为开发者提供了便利的API来构建复杂的SQL查询。在Spring Boot项目中,MyBatis-Plus作为一个扩展MyBatis的轻量级框架,大大简化了数据库操作。下面我们将深入探讨...

Global site tag (gtag.js) - Google Analytics