Maven モードで Tomcat ソースコードを実行する方法

Maven モードで Tomcat ソースコードを実行する方法

序文

最近、Tomcat の起動プロセスを分析していました。Tomcat のソース コードはアイデア次第で表示できますが、コード コメントを記述できないため、非常に不便です。そのため、ソース コードのコピーをローカルで実行することはできます。これは、ソース コードを分析するのに非常に役立ちます。

1. tomcatソースコードをダウンロードし、tomcat-8.5.55バージョンを選択します。

tomcatの公式サイトにアクセスし、左側のメニューバーの[ダウンロード]で対応するバージョンをクリックして、ソースコードをダウンロードします。

2.アイデアでプロジェクトを作成する

1.アイデアにtomcat_studyという名前の空のプロジェクトを作成します。

2. プロジェクトソースディレクトリを開き、Tomcatソースコードを解凍します。

3. フォルダを作成する

tomcat ソース コード フォルダーの下にホーム ディレクトリを作成し、ソース コード内の conf ディレクトリと webapps ディレクトリ (logs などの新しく作成された他のディレクトリ) をその中に切り取り、新しい maven pom.xml ファイルも作成します。

4. pom.xmlファイルの内容

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<プロジェクト xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
 <モデルバージョン>4.0.0</モデルバージョン>
 <グループ ID>org.apache.tomcat</グループ ID>
 <artifactId>Tomcat8.5.55</artifactId>
 <name>Tomcat8.5.55</name>
 <バージョン>8.5.55</バージョン>
 
 <依存関係>
  <依存関係>
   <groupId>ジュニット</groupId>
   <artifactId>junit</artifactId>
   <バージョン>4.12</バージョン>
   <scope>テスト</scope>
  </依存関係>
 
  <依存関係>
   <groupId>org.easymock</groupId>
   <artifactId>イージーモック</artifactId>
   <バージョン>3.4</バージョン>
  </依存関係>
 
  <依存関係>
   <グループ ID> org.apache.ant</グループ ID>
   <artifactId>アリ</artifactId>
   <バージョン>1.9.5</バージョン>
  </依存関係>
 
  <依存関係>
   <グループ ID>javax.xml.rpc</グループ ID>
   <artifactId>javax.xml.rpc-api</artifactId>
   <バージョン>1.1</バージョン>
  </依存関係>
 
  <依存関係>
   <グループID>wsdl4j</グループID>
   <アーティファクトID>wsdl4j</アーティファクトID>
   <バージョン>1.6.2</バージョン>
  </依存関係>
 
  <依存関係>
   <groupId>org.eclipse.jdt.core.compiler</groupId>
   <artifactId>ecj</artifactId>
   <バージョン>4.5.1</バージョン>
  </依存関係>
 </依存関係>
 
 <ビルド>
  <finalName>Tomcat8.5.55</finalName>
  <ソースディレクトリ>java</ソースディレクトリ>
  <リソース>
   <リソース>
    <ディレクトリ>java</ディレクトリ>
   </リソース>
  </リソース>
  <プラグイン>
   <プラグイン>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <バージョン>3.1</バージョン>
    <構成>
     <encoding>UTF-8</encoding>
     <ソース>1.8</ソース>
     <target>1.8</target>
    </構成>
   </プラグイン>
  </プラグイン>
 </ビルド>
</プロジェクト>

5. Tomcatの起動構成

5.1 プロジェクトをビルドする

上記の操作が完了したら、idea でプロジェクトを再度開き、追加した pom.xml ファイルを直接選択し、すべてのパッケージをダウンロードした後、プロジェクト構造を構築します。

5.2 実行/デバッグ構成の設定

メインクラス:
org.apache.catalina.startup.Bootstrap
 
独自のパスに応じて VM オプションを変更します。
-Dcatalina.home=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home 
-Dcatalina.base=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home 
-Djava.endorsed.dirs=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/endorsed 
-Djava.io.tmpdir=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/temp 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
-Djava.util.logging.config.file=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/conf/logging.properties

5.3 ContextConfigクラスの設定

次に、ContextConfig クラス (org.apache.catalina.startup の下) を開き、コード行を追加します: context.addServletContainerInitializer(new JasperInitializer(),null);

5.4 Tomcatを起動する

tomcat の初期化および起動プロセスやその他のソース コード実行をデバッグおよび表示できます。エントリ クラスは、Bootstrap クラスのメイン メソッドです。

要約する

上記のプロセスにより、Maven を介して Tomcat ソース コードをローカルで実行できます。エディターはこれを正常に実行し、Tomcat でサーブレット初期化を呼び出すプロセスに注釈を付けました。

Tomcat ソース コードを Maven モードで実行する方法に関するこの記事はこれで終わりです。Tomcat ソース コードを Maven モードで実行する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Maven を使用してアイデアを正常にコンパイルできるが、プロジェクトの実行時に多くの jar パッケージが見つからないという問題を解決します。
  • Maven を通じてプロジェクトを実行する 2 つの方法の詳細な説明

<<:  CSS Houdini でダイナミックな波効果を実現

>>:  XHTML 特殊文字コレクション

推薦する

MySQLトランザクションとSpring分離レベルの実装原理の詳細な説明

1. トランザクションはACID特性を持つ原子性: トランザクションは、トランザクションによって分割...

ネイティブ JS オブジェクト指向タイピング ゲーム

この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

Linux環境変数の設定に関する完全なガイド

Linux環境変数の設定ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定...

React のグローバル状態管理の 3 つの基本メカニズムの調査

目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

Vue 計算プロパティ実装トランスクリプト

この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

MySQLはPartition関数を使用して水平分割戦略を実装します。

目次1件のレビュー2 水平分割の5つの戦略2.1 ハッシュ2.2 範囲2.3. キー2.4. リスト...

Node.JS で悪天候のリアルタイム警報システムを構築する

目次序文:ステップ1: 無料の天気予報インターフェースを見つけるステップ2: 天気予報インターフェー...

Nginx でアンチホットリンクを設定するための手順を完了する

必要:通常、サイト側は、ウェブサイト上の動画や写真が盗まれるのを防ぎたいと考えています。結局のところ...

Vue lazyload 画像遅延読み込み例の詳細な説明

ドキュメント: https://github.com/hilongjw/vue-lazyload 1...

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

Linuxの貼り付けコマンドの使い方

01. コマンドの概要貼り付けコマンドは各ファイルを列ごとに結合します。これは、2 つの異なるファイ...

Alibaba Cloud Server で MySQL デュアルマシン ホットスタンバイを手動で実装する 2 つの方法

1. コンセプト1. ホットバックアップとバックアップの違いホット バックアップは高可用性 (HA)...