用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