[Tomcatのソースコード分析] Eclipseは、デバッグ環境のApache Tomcatのソースコードに建てられました

多くの記事をコンパイルするAntのダウンロードするには、インターネットの使用を推奨しますが、繰り返し地元の練習に失敗した、ダウンロードすることはできません。

後で参照するには、https://blog.csdn.net/xiongyouqiang/article/details/78941077完全なデバッグ環境を構築するために管理します。

次の記事では、ほぼ完全に上記のURLをコピーして、若干延長されます。

ダウンロードソース

ソースをダウンロードする公式サイト

http://tomcat.apache.org/download-70.cgi 

Eclipseにソース

ステップ1:Eclipseは新しいJavaプロジェクトを作成し、名前などは、Tomcat-Srcのかもしれ

ステップ2:プロジェクト=>インポート=>一般=>ファイルシステム上で右クリックし、[次へ]ボタンをクリックしてください。

 

ステップ3:[完了]ボタンをクリックし、(ノートはexamplesディレクトリをチェックする必要はありません)、Tomcatのソース抽出パスを検索するために、ブラウザのボタンをクリックして、チェックのjava、テスト、のconfディレクトリをwebappsに。

 

 ステップ4:ディレクトリのjavaとテスト=>ビルド・パス=>を使用するように、ソースフォルダのソースディレクトリに2つのディレクトリを右クリックします。同時に、プロジェクトの任意の元srcディレクトリを削除することができます。

ステップ5:特定のjarリードが不足しているため、通常のプロジェクトに表示されるインポート解決コンパイルエラー、

主な輸入フル次のjar

ant.jarを

ECJ-4.4.2.jar

jaxrpc.jar

WSDL4J-1.5.2.jar 

easymock-3.5.1.jar

libディレクトリに新しいプロジェクトで、ディレクトリにこれらのjarパッケージ、およびビルド・パスに追加します。

ユニットテストツールJUnitのようJUnitのを使用してApache Tomcatが、私たちは、このプロジェクトのためのサポートを追加するためのプロジェクト=>プロパティ=> Javaのビルド・パス上で右クリックを必要としています。

ライブラリの追加]ボタンをクリックして、あなたはJunit4を選択することができます。

 

 

此时test包中的TestCookieFilter类会报CookieFilter编译异常,这是因为缺少CookieFilter这个类导致,经过一番查找总算找到了CookieFilter源码如下所示:

/*

* 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;

}

}

 

此时仍有部分error,但不影响调试

设置Debug Configuration,设定程序入口,开始调试!

 

 


————————————————
原文链接:https://blog.csdn.net/xiongyouqiang/article/details/78941077

 

おすすめ

転載: www.cnblogs.com/tyyt/p/12032268.html