IDEA运行Tomcat8.5.73源码
一. 下載 8.5.73源碼
https://tomcat.apache.org/download-80.cgi
二.解壓源碼
指定catalina-home
新建catalina-home目錄,并將conf和webapps目錄拷貝到catalina-home目錄中。并新建logs、work、temp、lib目錄,初始都為空。如下圖
缺失文件引入 新建pom.xml
三 新建CookieFilter.java文件
因?yàn)榫唧w編譯階段,會(huì)提示找不到此java文件,所以需要在test\util目錄下新建CookieFilter.java文件,并將以下內(nèi)容復(fù)制粘貼到文件中。
/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements. See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License. You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/ package util;import java.util.Locale; import java.util.StringTokenizer;/*** Processes a cookie header and attempts to obfuscate any cookie values that* represent session IDs from other web applications. Since session cookie names* are configurable, as are session ID lengths, this filter is not expected to* be 100% effective.** It is required that the examples web application is removed in security* conscious environments as documented in the Security How-To. This filter is* intended to reduce the impact of failing to follow that advice. A failure by* this filter to obfuscate a session ID or similar value is not a security* vulnerability. In such instances the vulnerability is the failure to remove* the examples web application.*/ public class CookieFilter {private static final String OBFUSCATED = "[obfuscated]";private CookieFilter() {// Hide default constructor}public static String filter(String cookieHeader, String sessionId) {StringBuilder sb = new StringBuilder(cookieHeader.length());// Cookie name value pairs are ';' separated.// Session IDs don't use ; in the value so don't worry about quoted// values that contain ;StringTokenizer st = new StringTokenizer(cookieHeader, ";");boolean first = true;while (st.hasMoreTokens()) {if (first) {first = false;} else {sb.append(';');}sb.append(filterNameValuePair(st.nextToken(), sessionId));}return sb.toString();}private static String filterNameValuePair(String input, String sessionId) {int i = input.indexOf('=');if (i == -1) {return input;}String name = input.substring(0, i);String value = input.substring(i + 1, input.length());return name + "=" + filter(name, value, sessionId);}public static String filter(String cookieName, String cookieValue, String sessionId) {if (cookieName.toLowerCase(Locale.ENGLISH).contains("jsessionid") &&(sessionId == null || !cookieValue.contains(sessionId))) {cookieValue = OBFUSCATED;}return cookieValue;} }四 構(gòu)建項(xiàng)目
Main class設(shè)置為org.apache.catalina.startup.Bootstrap
添加VM options (不要有回車換行,如直接拷貝,請(qǐng)仔細(xì)檢查)
-Dcatalina.home=catalina-home
-Dcatalina.base=catalina-home
-Djava.endorsed.dirs=catalina-home/endorsed
-Djava.io.tmpdir=catalina-home/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=catalina-home/conf/logging.properties
// 控制臺(tái)啟動(dòng)中文亂碼,簡(jiǎn)單處理使用默認(rèn)使用英文模式。
-Duser.language=en
五、啟動(dòng)項(xiàng)目
上面工作完成后,點(diǎn)擊run或debug進(jìn)行啟動(dòng)。
項(xiàng)目啟動(dòng)完畢我們可以測(cè)試了,在瀏覽器訪問(wèn)http://localhost:8080/ 發(fā)現(xiàn)打不開(kāi)我們看到的經(jīng)典歡迎頁(yè)面了,頁(yè)面報(bào)了一個(gè)錯(cuò)。
原因是我們直接啟動(dòng)org.apache.catalina.startup.Bootstrap的時(shí)候沒(méi)有加載org.apache.jasper.servlet.JasperInitializer,從而無(wú)法編譯JSP。解決辦法是在tomcat的源碼org.apache.catalina.startup.ContextConfig中手動(dòng)將JSP解析器初始化:
修改完后,項(xiàng)目再啟動(dòng),我們?cè)僭跒g覽器訪問(wèn)http://localhost:8080/ ,就可以看到我們所熟悉的經(jīng)典歡迎頁(yè)面了
啟動(dòng)成功后,會(huì)出現(xiàn)訪問(wèn)具體app時(shí)出現(xiàn)中文亂碼,可以參考如下文章解決:
記一次tomcat源碼啟動(dòng)控制臺(tái)中文亂碼問(wèn)題調(diào)試過(guò)程
總結(jié)
以上是生活随笔為你收集整理的IDEA运行Tomcat8.5.73源码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 常考数据结构与算法-NC105 二分查找
- 下一篇: 常考数据结构与算法: NC19 连续子数