用java代碼啟動tomcat


package com.test;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.junit.Test;
public class TestTomcat {//Test.class
    //通過如下方法啟動tomcat
    @Test
    public void testTomcat()throws Exception {
        //1.構建tomcat對象(遵循JAVAEE規范)
        Tomcat t=new Tomcat();
        //2.構建Connector對象(連接器),負責協議配置,端口配置等
        Connector conn=new Connector("HTTP/1.1");
        conn.setPort(8080);
        t.getService().addConnector(conn);
        //3.啟動tomcat
        t.start();
        //4.阻塞當前線程
        t.getServer().await();
        
    }
}

 需要導入的jar包

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.12</version>
        </dependency>

    </dependencies>

 2.注冊servlet:

 1 import org.apache.catalina.Context;
 2 import org.apache.catalina.connector.Connector;
 3 import org.apache.catalina.startup.Tomcat;
 4 import org.junit.Test;
 5 public class ServletTests {
 6     //嵌入式tomcat測試
 7     @Test
 8     public void testServlet()throws Exception {
 9       //構建tomcat對象,此對象為啟動tomcat服務的入口對象
10       Tomcat t=new Tomcat();
11       //構建Connector對象,此對象負責與客戶端的連接.
12       Connector con=new Connector("HTTP/1.1");
13       //設置服務端的監聽端口
14       con.setPort(8080);
15       //將Connector注冊到service中
16       t.getService().addConnector(con);
17       //注冊servlet
18       Context ctx=t.addContext("/",null);
19       Tomcat.addServlet(
20               ctx,
21               "helloServlet",
22               "com.company.java.servlet.HelloServlet");
23       //映射servlet
24       ctx.addServletMappingDecoded("/hello", "helloServlet");
25       //啟動tomcat
26       t.start();
27       //阻塞當前線程
28       System.out.println(Thread.currentThread().getName());
29       t.getServer().await();
30       //while(true) {}
31     }
32 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM