内嵌式tomcat启动web工程

来源:互联网 发布:卓越工具箱淘宝客软件 编辑:程序博客网 时间:2024/05/23 19:17

1、内嵌式tomcat启动web工程,样例工程代码点击下载。

       下载地址: 点击打开链接


2、tomcat 启动类

package com.test;import org.apache.catalina.Context;import org.apache.catalina.connector.Connector;import org.apache.catalina.startup.Tomcat;import org.apache.tomcat.util.scan.StandardJarScanner;import javax.servlet.ServletException;/** * 嵌入式tomcat web应用启动类, */public class TomcatBootstrapHelper {    private static final char ENTER_CHAR = '\n';    /**     * 默认端口     */    private static final int DEFAULT_PORT = 8080;    private static final String DEFULT_ENV = "dev";    private int port = DEFAULT_PORT;    /**     * 是否启用servlet 3.0 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启     */    private boolean isServlet3Enable = false;    /**     * 构建一个<code>TomcatBootstrapHelper.java</code>     *     * @param port 端口     * @param isServlet3Enable 是否启用servlet 3.0     * 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启     * @param env 设置环境变量 spring.profiles.active     */    public TomcatBootstrapHelper(int port, boolean isServlet3Enable, String env) {        System.setProperty("spring.profiles.active", env);        this.port = port;        this.isServlet3Enable = isServlet3Enable;    }    /**     * 构建一个<code>TomcatBootstrapHelper.java</code><br>     * 环境变量spring.profiles.active=dev     *     * @param port 端口     * @param isServlet3Enable 是否启用servlet 3.0     * 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启     */    public TomcatBootstrapHelper(int port, boolean isServlet3Enable) {        this(port, isServlet3Enable, DEFULT_ENV);    }    /**     * 构建一个<code>TomcatBootstrapHelper.java</code><br>     * 不启用servlet 3.0 支持、环境变量spring.profiles.active=dev     *     * @param port 端口     */    public TomcatBootstrapHelper(int port) {        this(port, false);    }    /**     * 构建一个<code>TomcatBootstrapHelper.java</code><br>     * 端口:8080、不启用servlet 3.0 支持、环境变量spring.profiles.active=dev     */    public TomcatBootstrapHelper() {        this(DEFAULT_PORT);    }    public void start() {        try {            long begin = System.currentTimeMillis();            Tomcat tomcat = new Tomcat();            configTomcat(tomcat);            tomcat.start();            long end = System.currentTimeMillis();            log(end - begin);            //在控制台回车就可以重启,提高效率            while (true) {                char c = (char) System.in.read();                if (c == ENTER_CHAR) {                    begin = System.currentTimeMillis();                    System.out.println("重启tomcat...");                    tomcat.stop();                    tomcat.start();                    end = System.currentTimeMillis();                    log(end - begin);                }            }        } catch (Exception e) {              e.printStackTrace();        }    }    private void configTomcat(final Tomcat tomcat) throws ServletException {         tomcat.setBaseDir("target");        tomcat.setPort(port);        Connector connector = new Connector("HTTP/1.1");        connector.setPort(port);        connector.setURIEncoding("utf-8");        tomcat.setConnector(connector);        tomcat.getService().addConnector(connector);        String webappPath = getWebappsPath();        System.out.println("webapp目录:" + webappPath);        Context ctx = tomcat.addWebapp("/", webappPath);        StandardJarScanner scanner = (StandardJarScanner) ctx.getJarScanner();        if (!isServlet3Enable) {            scanner.setScanAllDirectories(false);            scanner.setScanClassPath(false);        }        tomcat.setSilent(true);        System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "JSESSIONID" + port);    }    private void log(long time) {        System.out.println("********************************************************");        System.out.println("启动成功: http://127.0.0.1:" + port + "   in:" + time + "ms");        System.out.println("您可以直接在console里敲回车,重启tomcat");        System.out.println("********************************************************");    }    public String getWebappsPath() {        String file = getClass().getClassLoader().getResource(".").getFile();        return file.substring(0, file.indexOf("target")) + "src/main/webapp";    }}





原创粉丝点击