Mavanに基づいてIDEAを構築およびインポートする
1. Tomcatのソースコードアドレスは http://tomcat.apache.org/download-80.cgiです。この記事で使用されているTomcatのバージョンは、apache-tomcat-8.5.41-srcです。
注:この記事のインストールディレクトリはE:\ apache-tomcat-8.5.41-srcです。これは何度も使用されるため、独自のディレクトリに置き換える必要があります。
2. apache-tomcat-8.5.41-srcのルートディレクトリに新しいpom.xmlファイルを作成し、依存するjarパッケージをインポートします。ファイルの内容は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<project 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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache</groupId>
<artifactId>tomcat</artifactId>
<name>apache-tomcat-8.5.24</name>
<version>8.5.24</version>
<build>
<finalName>Tomcat-8.5.24</finalName>
<sourceDirectory>java</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.xml.rpc -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.xml.rpc</artifactId>
<version>3.0.1-b03</version>
</dependency>
</dependencies>
</project>
3. test / util / TestCookieFilter.javaを削除します。削除しないと、起動時にエラーが報告されます。
4.IDEAで選択しますFile -> New -> Project from Existing Sources...,按照Maven项目新建即可。
5.を選択しRun -> Edit Configurations
ます。
Main class:
org.apache.catalina.startup.Bootstrap
VM options:
-Dcatalina.home=E:\apache-tomcat-8.5.41-src -Dcatalina.base=E:\apache-tomcat-8.5.41-src -Djava.endorsed.dirs=E:\apache-tomcat-8.5.41-src/endorsed -Djava.io.tmpdir=E:\apache-tomcat-8.5.41-src/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=E:\apache-tomcat-8.5.41-src/conf/logging.properties
6. jsp初期化プログラムを追加し、org.apache.catalina.startup.ContextConfig.javaクラスを追加します
context.addServletContainerInitializer(new JasperInitializer(), null);
7.訪問を開始するだけです。org.apache.catalina.startup.Bootstrap.javaの主なメソッドは開始エントリです。
8. WebプロジェクトをTomcatに追加して、実行中のプロセスを確認します。構成プロジェクトは、server.xmlの構成プロジェクトと同じです。ではE:\ \のapache-tomcat- 8.5.41-srcのconfの下の server.xmlの 中 のホストの追加ノード
<Context docBase="E:/apache-tomcat-8.5.41-src/webapps/ROOT" path="/mytomcat" debug="0" reloadable="true"/>
9.プロジェクトを開始し、http:// localhost:8080 /にアクセスします
問題が解決しました
起動時に次のエラーが報告された場合:Error:osgi:[apache-tomcat-8.5.41-src] Bundle-Versionの値が無効です、@ VERSION @は[0-9] {1,9}(。[ 0 -9] {1,9}(。[0-9] {1,9}(。[0-9A-Za-z _-] +)?)?)?
使用するには@ version @を1.1に変更するだけです
エントリクラスを探します。例としてWindowsのスタートアップバットがあります。Linuxのshも同様です。
Tomcatをより適切に使用するには、Tomcatを最適化する必要があります。最適化には特定の最適化インジケーターがあり、最適化問題の検索を容易にするためにこれらのインジケーターを監視する必要があります。
業界には、優れた監視ツールもあります。
Tomcat管理および監視ツールのpsiプローブ
GitHubからPsiプローブの戦争パッケージをダウンロードします
https://github.com/psi-probe/psi-probe/releases
二、部署
1.ダウンロードしたwarパッケージをtomcatのwebapps /ディレクトリにコピーします
2. conf /tomcat-users.xmlファイルを構成します。
<!-psiプローブ関連の役割構成->
<role rolename = "probeuser" />
<role rolename = "poweruser" />
<role rolename = "poweruserplus" />
<role rolename = "manager-gui" />
<user username = "admin" password = "123456" role = "manager-gui" />
その中で、admin / 123456は、プローブインターフェイスにアクセスするために必要なユーザー名とパスワードです。
3. bin /catalina.shまたはbin / catalina.batファイルを構成して、リモートjvmサポートを有効にします(不要な場合は、この手順をスキップします)。
(1)LinuxでのTomcat(catalina.sh):
#リモートjvmサポートをオンにする
export JAVA_OPTS = $ JAVA_OPTS "-Dcom.sun.management.jmxremote"
(2)WindowsでのTomcat(catalina.bat):
remはリモートjvmサポートを有効にします
JAVA_OPTS = -Dcom.sun.management.jmxremoteを設定します
変更後、Tomcatを1回再起動することをお勧めします
3、Psiプローブを使用します
ブラウザで、http:// ip:port / probeを介して監視プラットフォームにアクセスし、tomcat-users.xmlファイルで設定されているユーザー名とパスワードを入力します。
このとき、次のエラーが発生します。
以下の問題を確認してください。
1.ログを検索する
重要な例外情報を見つけ、推測して検証します。
主な機能紹介
(1)アプリケーションのリスト
このページには、このTomcatインスタンスにデプロイされているすべてのアプリケーションが表示され、基本情報が一覧表示されます。
- リクエスト:このアプリがリリースされてから処理されたリクエストの総数
- セッション:このアプリケーションで現在アクティブなセッションの数(クリックしてセッションのリストを表示します)
- セッション属性:このアプリケーションの現在のセッション属性の数
- 属性の数:このアプリケーションの現在のServletContextレベルの属性の数(クリックして特定の属性リストを表示)
- タイムアウト:セッションのタイムアウト期間
- JDBCの使用法:Tomcat独自のJDBC接続プールが使用されている場合にのみ役立ちます
(2)アプリケーションの詳細
アプリケーションリストでアプリケーションをクリックして、アプリケーション詳細インターフェイスに入ります
アプリケーション詳細インターフェースには、10個のサブインターフェースがあります。
- 概要:アプリケーションの概要情報を表示し、アプリケーションを開始および停止します
- セッション:このアプリケーションの現在アクティブなすべてのセッションを一覧表示します。各セッションの詳細情報とセッションに保存されている属性を確認できます。また、セッションを強制的に破棄することもできます。
- 属性:ServletContextの属性リストを一覧表示します
- JSP:このアプリケーションの下にあるすべてのJSPページを一覧表示すると、JSPページを手動でコンパイルできます。
- リソース:Tomcatリソース(JDBC接続プールなど)が定義されている場合にのみ機能し、リソースに関する関連情報を表示します
- コンテキスト記述ファイル:このアプリケーションのcontext.xmlを表示します
- リリース記述ファイル:このアプリケーションのweb.xmlを表示します
- サーブレット:このアプリケーションの下にあるすべてのサーブレットと、各サーブレットのパフォーマンス統計を表示します
- フィルタ:このアプリケーションの下にあるすべてのフィルタを表示します
- パラメータ:このアプリケーションの初期コンテキストパラメータを表示します
(3)データソース
Tomcatに付属のJDBC接続プールを使用する場合、このインターフェースは、アクティブ接続の最大数、アイドル接続の最小数、現在アクティブな接続の数など、JDBC接続プールの詳細情報とステータスデータを表示できます。等
(4)リリース
このインターフェースでは、アプリケーションをTomcatに公開できます。
(5)ログ
このTomcatインスタンスによって生成されたログファイルを表示します。これはオンラインで閲覧およびダウンロードできます。
(6)スレッド
Tomcatプロセスのすべてのスレッド情報を表示し、スレッド実行ポイントをクリックして、スレッドのスタックトレースを表示します。
ステータス列は次のことを示しています。
- 実行可能:システムは実行中です。
- WAITING:この状態は、ロックを所有し、waitメソッドを呼び出し、他のスレッド所有者がnotifyを呼び出してスレッドをウェイクアップし、次の操作を続行するのを待機するスレッドを指します。
- TIME_WAITING:制限付き待機。通常、waitやjoinなどを呼び出すときに発生し、スレッドがスリープした後、time_waiting状態にもなります。
- BLOCKED:ブロック状態。これは、スレッドがビジーで実行中であり、リソースが待機している可能性があることを意味します。ブロック状態のスレッドに長時間注意を払い、スレッドスタックをダンプしてプログラムを見つける必要があります。何をすべきかを分析し、それらのリソースを待つ。
- TERMINATED:runメソッドが実行され、デッド状態に入ったことを示します。スレッドが長時間保持されている場合、リサイクルされない可能性があります。
(7)スレッドプール
スレッドインターフェイスでスレッドプールをクリックして入力します
(8)システム情報
このインターフェイスは、JVMと、JVMのメモリ使用量、JVMパラメータ、CPU /メモリ/スワップの使用量などのオペレーティングシステム情報を表示できます。
(9)コネクタ
Tomcatコネクター情報は、各コネクター処理要求の履歴統計、およびコネクターによって現在処理されている要求情報を含めて、このインターフェースに表示されます。
上記のソースコードのインポートと監視の最適化ツールはすべて構成されており、ソースコードの分析とパフォーマンスの最適化操作を実行できます。
すべての準備ができました!ソースコードへの道を歩み始めましょう!