TomcatBoot啓動

package com.spring.web.mvc;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.apache.tomcat.util.scan.StandardJarScanner;

public class TomcatBoot {
	public void start() {
		try {
			int port = 8080;
			Tomcat tomcat = new Tomcat();
			// 設置tomcat工作目錄,
			tomcat.setBaseDir("target");
			//設置端口
			tomcat.setPort(port);
			//設置IP
			tomcat.setHostname("localhost");
			//設置connector
			//協議版本
			Connector connector = new Connector("HTTP/1.1");
			//端口號
			connector.setPort(port);
			//編碼格式,get 編碼默認是 ISO-8859-1
			connector.setURIEncoding("utf-8");
			//讓 URI 和 body 編碼一致。(針對POST請求)
			connector.setUseBodyEncodingForURI(true);
			//將connect添加到tomcat中
			tomcat.setConnector(connector);
			//1.新建了server,並添加到了tomcat中
			//2.新建了service,並添加到了server中
			//3.向service中添加connector
			tomcat.getService().addConnector(connector);
			//設置webapp工作目錄,以下webappPath對應tomcat的webapp路徑
            //1.獲取.class生成路徑(classspath)路徑  2.將路徑從target處截斷,再加上src/main/webapp目錄。 此處就是web.xml所在目錄
			String file = getClass().getClassLoader().getResource(".").getFile();
			String webappPath = file.substring(0, file.indexOf("target")) + "src/main/webapp";
			System.out.println("webapp目錄:" + webappPath);
			//獲取webapp目錄的上下文
			Context ctx = tomcat.addWebapp("/", webappPath);
			//設置目錄掃描:默認不掃描全目錄,掃描classpath。   
			//掃描classpath主要是爲了掃描servlet3.0的各種註解,類似於dispatcherServlet-servlet.xml配置文件的自動掃描
			//建議兩個都關閉掉,不然影響啓動時間,
			StandardJarScanner scanner = (StandardJarScanner) ctx.getJarScanner();
			//是否掃描全目錄
			scanner.setScanAllDirectories(false);
			//是否掃描classpath
			scanner.setScanClassPath(false);
			
			tomcat.setSilent(true);
			System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "JSESSIONID" + port);
			tomcat.start();
			while (true) {
				char c = (char) System.in.read();
				if (c == 1) {
					System.out.println("重啓tomcat...");
					tomcat.stop();
					tomcat.start();
				}
			}
		} catch (Exception ex) {
		}
	}

}

POM.XML

		<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-logging-juli</artifactId>
		<version>8.5.0</version>
		</dependency>

		<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
		<version>8.5.0</version>
		</dependency>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章