清理不必要的 Web 應用
首先我們要做的是刪除掉 webapps 文件夾下不需要的工程,一般是 host-manager、example、doc 等這些默認的工程,可能還有以前添加的但現在用不着的工程,最好把這些全都刪除掉。如果你看過 Tomcat 的啓動日誌,可以發現每次啓動 Tomcat,都會重新佈署這些工程。
清理 JAR 文件
我們還可以刪除所有不需要的 JAR 文件。JVM 的類加載器在加載類時,需要查找每一個 JAR 文件,去找到所需要的類。如果刪除了不需要的 JAR 文件,查找的速度就會快一些。這裏請注意:Web 應用中的 lib 目錄下不應該出現 Servlet API 或者 Tomcat 自身的 JAR,這些 JAR 由 Tomcat 負責提供。如果你是使用 Maven 來構建你的應用,對 Servlet API 的依賴應該指定爲provided。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--用於編譯jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
關閉mysql SSL鏈接
mysql的高版本默認要求使用SSL鏈接,所以在沒有配置SSL也沒有說SSL不需要時,就會一直驗證,驗證好幾遍以後放棄。
解決辦法在鏈接參數里加上
spring.datasource.çurl=jdbc:mysql://localhost:3306/mark?useUnicode=true&characterEncoding=utf-8&useSSL=false
禁止 Tomcat TLD 掃描
Tomcat 爲了支持 JSP,在應用啓動的時候會掃描 JAR 包裏面的 TLD 文件,加載裏面定義的標籤庫,所以在 Tomcat 的啓動日誌裏,你可能會碰到這種提示:
At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Tomcat 的意思是,我掃描了你 Web 應用下的 JAR 包,發現 JAR 包裏沒有 TLD 文件。我建議配置一下 Tomcat 不要去掃描這些 JAR 包,這樣可以提高 Tomcat 的啓動速度,並節省 JSP 編譯時間。
禁止TLD掃描
如果你的項目沒有使用 JSP 作爲 Web 頁面模板,而是使用 Velocity 之類的模板引擎,你完全可以把 TLD 掃描禁止掉。方法是,找到 Tomcat 的conf/目錄下的context.xml文件,在這個文件裏 Context 標籤下,加上 JarScanner 和 JarScanFilter 子標籤,像下面這樣。
指定掃描的jar包
1: 開啓掃描的日誌, 方便知道那些包裏有TLD 文件 logging.properties
org.apache.jasper.servlet.TldScanner.level = FINE
2: 把需要掃描的包加到 catalina.properties裏
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar,\
javamelody-core*.jar,\
spring-webmvc*.jar,\
jstl*.jar,\
shiro-web*.jar
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
*.jar