Tomcat 嵌入式開發 (二) 嵌入式啓動 Tomcat

簡介

本文使用最新的Tomcat9.0.29版本進行開發,也是借鑑了網上一些Tomcat8/7版本的嵌入式開發代碼(資料好少,得本身慢慢踩坑)html

下載Tomcat嵌入式開發jar包

打開Tomcat9下載網址https://tomcat.apache.org/dow...java

圖片中使用紅框圈起來的就是Tomcat嵌入式開發所須要的基礎jar,固然能夠去Maven官網搜索相應jar並引入到Maven項目的pom.xml中web

image-20191208205631279

pom.xml

<properties>
        <maven_version>9.0.29</maven_version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${maven_version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>${maven_version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
            <version>${maven_version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
            <version>${maven_version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
    </dependencies>

Tomcat.class

這個類用於嵌入式開發程序,也就是說它是咱們啓動Tomcat的入口。apache

  1. 全部servlet或者Tomcat相關的類都須要在Tomcat.class中註冊
  2. 須要配置Tomcat的工做目錄
  3. Tomcat9能夠不使用配置文件啓動(好比web.xml),固然你一樣能夠選擇使用配置文件啓動Tomcat,這是可選擇的

啓動Tomcat

首先咱們須要瞭解Tomcat啓動所需的最基礎配置,就像剛學java的時候同樣,先System.out.println("Hello World"); (滑稽)json

Host

Host配置了Tomcat啓動相關的主機參數,好比主機名(ip)、端口、熱加載等等api

Tomcat tomcat = new Tomcat();
tomcat.getHost()

​ 首先實例化一個Tomcat,而後直接獲取Host,注意這裏是能夠直接獲取且host !=null ,接下來看看getHost()方法的源碼,咱們能夠看到,方法先獲取Engine字段,若是engine.findChildren()返回值爲空的話則實例化一個Host,而且設置name=「localhost」。tomcat

​ Host是一個interface,而它的實現類爲StandardHost,該類中配備了一些默認的啓動參數,有興趣的能夠點擊該類的源碼查看。websocket

protected String hostname = "localhost";

public Host getHost() {
        Engine engine = this.getEngine();
        if (engine.findChildren().length > 0) {
            return (Host)engine.findChildren()[0];
        } else {
            Host host = new StandardHost();
            host.setName(this.hostname);
            this.getEngine().addChild(host);
            return host;
        }
    }

接下來咱們須要建立一個StandardContext,這個類實現了Context接口,Context接口主要處理Servlet的各種請求app

  1. setPath:設置訪問路徑的前綴
  2. addLifecycleListener:添加一個監聽器

    Tomcat.FixContextListener() 該監聽器在不使用web.xml時爲必須項socket

    Tomcat.DefaultWebXmlListener() 該監聽器會獲取一些已配置好的設置,適用於程序化配置

    Tomcat.ExistingStandardWrapper(Servlet existing) 該監聽器使用自定義的Servlet,加強對Servlet的控制

緊接着咱們把context添加到host中

StandardContext context = new StandardContext();
context.setPath("/test");
context.addLifecycleListener(new Tomcat.FixContextListener());
tomcat.getHost().addChild(context);

更多文章詳情請移步http://blog.seasedge.cn/archives/52.html

碼字不易~請多多支持 *_*
相關文章
相關標籤/搜索