本文共 2587 字,大约阅读时间需要 8 分钟。
使用git克隆Apache Tomcat的代码仓库:
git clone https://gitee.com/mirrors/tomcat.gitcd tomcat
切换到指定版本的分支:
git checkout -b "tomcat7.0" origin/7.0.x# 或者git checkout -b "tomcat8.5" origin/8.5.x
在IDEA中创建新项目,选择项目类型为“ exploded pom ”,输入项目名称,当导入完成后,IDEA会自动生成代码并弹出窗口。
将提供的pom.xml复制到项目根目录下,并确保内容与实际项目匹配。模板格式如下:
...
注意: 根据项目需求调整_groupId、artifactId、version、name等字段。
在tomcat/test/util目录下新建CookieFilter.java文件,并添加以下内容:
package util;import java.util.Locale;import java.util.StringTokenizer;public class CookieFilter { private static final String OBFUSCATED = "[obfuscated]"; private CookieFilter() { // Hidden constructor } public static String filter(String cookieHeader, String sessionId) { StringTokenizer st = new StringTokenizer(cookieHeader, ";"); StringBuilder sb = new StringBuilder(cookieHeader.length()); boolean first = true; while (st.hasMoreTokens()) { if (!first) { sb.append(';'); } sb.append(filterNameValuePair(st.nextToken(), sessionId)); first = false; } 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); 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; }}
在tomcat/conf/af/MANIFEST.MF中,查找并修改@VERSION@
为1.1
或相应版本。
错误示例:
Error: osgi: [tomcat] Invalid value for Bundle-Version, @VERSION@ does not match [0-9]{1,9}(\.[0-9]{1,9}(\.[0-9]{1,9}(\.[0-9A-Za-z_-]+)?)?)?
解决方法:
将MANIFEST.MF文件中的@VERSION@
替换为1.1
。
在启动Apache Tomcat时,添加以下Java选项:
-Dcatalina.home=/Users/xianghan/work/github/tomcat \-Dcatalina.base=/Users/xianghan/work/github/tomcat \-Djava.endorsed.dirs=/Users/xianghan/work/github/tomcat/endorsed \-Djava.io.tmpdir=/Users/xianghan/work/github/tomcat/temp \-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \-Djava.util.logging.config.file=/Users/xianghan/work/github/tomcat/conf/logging.properties
在项目根目录下执行以下命令启动Tomcat:
runBootstrap main()
以上步骤确保了Tomcat源码的正确构建与配置。
转载地址:http://dzqgz.baihongyu.com/