Eclipse/Tomcat でホットデプロイメントとホットスタートを実装する方法

Eclipse/Tomcat でホットデプロイメントとホットスタートを実装する方法

1. ホット デプロイメント: コンテナの実行中にプロジェクト全体を再デプロイすることを意味します。この場合、通常、メモリ全体がクリアされ、再ロードされます。簡単に言えば、Tomcat または他の Web サーバーがプロジェクトの再ロードに役立ちます。この方法では、セッションが失われるなどの状況が発生する可能性があります。

2. ホットローディング: コンテナの実行中にコンパイルされたクラスを再ロードして変更することを意味します。この場合、メモリはクリアされず、セッションは失われませんが、メモリオーバーフローが発生したり、メソッドが見つからないという問題が起こりやすくなります。メモリはオブジェクトに変換できないためです。一般的に、クラスの構造やモデルを変更すると例外が発生しますが、既存の変数やメソッドを変更しても問題は発生しません。

Eclipse 構成ホット スタート:

Java ベースのホットデプロイメントとホットロードのプロセスでは、クラスローダーが重要な役割を果たします。クラス ローダーは、すでにロードされているクラスを再ロードすることはできません。そうしないと、java.lang.LinkageError が報告されますが、新しいクラス ローダー インスタンスが使用されている限り、実行中のアプリケーションにクラスを再度ロードできます。通常、デバッグ モードはホット ローディングをサポートします。

しかし、ここで、Eclipse がデバッグで起動されたがホット ローディングが行われず、クラス ファイルへの変更ごとに再コンパイルが必要になったため、開発に非常に時間がかかるという状況に遭遇しました。ここでは、ホット ローディングに Eclipse を使用する方法について簡単に紹介します。

Eclipseを起動し、次のディレクトリを見つけます。

server.xmlを開いて

次のようにコードをコピーします
<コンテキスト docBase="dreamlive" パス="/ROOT" リロード可能="true" クロスコンテキスト="true" ソース="org.eclipse.jst.jee.server:dreamlive"/>

このコード行では、新しいプロジェクトをデプロイすると、docBase とソースがそれに応じて変更されます。現在はまだホット デプロイ状態であるため、クラス ファイルが変更されるたびに自動的にコンパイルされますが、これには時間がかかります。次に、構成を変更してみましょう。

次のようにコードをコピーします
<コンテキスト docBase="dreamlive" path="/ROOT" reloadable="false" crossContext="true" source="org.eclipse.jst.jee.server:dreamlive"/></ホスト>

ホット スタートを有効にするには、reloadable を false に変更し、crossContext="true" を追加します。注: デバッグから開始する必要があります。

ただし、新しいプロジェクトをデプロイするたびにこの設定を変更する必要があります。新しいプロジェクトがデプロイされるたびに、server.xml ファイルの動的な変更を観察できます。設定が完了した後、プロジェクトのホットロードが有効にならない場合は、eclipse --> プロジェクト --> 自動的にビルドをチェックして、自動コンパイルを追加します。

各属性の意味は下記に添付されています

  • パスはアクセスパスを示します
  • docBaseはストレージパスを示します
  • debug はデバッグ レベルを、最も少ない情報を提供する 0 と、最も多くの情報を提供する 9 に設定します。
  • reloadable=true の場合、web.xml またはクラスが変更されると、サービスを再起動せずに自動的に再ロードされます。
  • crosscontext="true" は、異なる設定されたコンテキストがセッションを共有することを意味します (オプション)

Tomcat 構成ホットスタート

具体的な方法は以下の通りです。

手順 1: Tomcat インストール ディレクトリで、conf/server.xml のホスト構成を変更し、その reloadable 属性を true に設定します。つまり、Host タグに reloadable="true" を追加し、Tomcat を再起動して構成ファイルを有効にします。

ステップ2: confフォルダのweb.xmlファイルに追加する

<初期化パラメータ>
 <param-name>開発</param-name>
 <param-value>true</param-value>
</init-param>

ステップ 3: 変更を有効にするには、Tomcat サーバーを再起動します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • EclipseがTomcatサーバーをデプロイして起動できない問題の解決策
  • Tomcat にデプロイすると SpringBoot アプリケーションが起動できない問題の解決方法
  • 複数の Tomcat を展開して起動し、プロジェクトを移行する方法を 1 つの記事で学習します。

<<:  MySQLのネストされたトランザクションで発生する問題

>>:  MySQL 5.7 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

推薦する

非常に実用的なMySQL関数の包括的な概要、詳細な例の分析チュートリアル

目次1. MySQLの関数の説明2. 単行関数の分類3. キャラクター機能4. 数学関数5. 日付と...

inline-blockプロパティとの互換性

<br />1年前、インターネット上にはinline-blockプロパティに関する記事は...

JavaScript配列の簡単な紹介

目次配列の紹介配列リテラル2次元配列要約する配列の紹介配列- Arrayもオブジェクトですこれは通常...

React における setState の同期または非同期の問題の理解

目次1. setState は同期的ですか?非同期ですか? 2. 非同期的に動作する1. React...

MySQL で 2 つのテーブルをクエリする場合の from と join の違いの概要

序文MySQL では、複数テーブル結合クエリは非常に一般的な要件です。複数テーブルクエリを使用する場...

HTML で Flash を読み込む方法 (2 つの実装方法)

最初の方法: CSSコード:コードをコピーコードは次のとおりです。 .b970-a{幅:970px;...

ウェブページサイズに関する調査

<br />統計によると、Web ページの平均サイズは 2003 年以降 3 倍に増加し...

ウェブデザインにおける階層化インターフェースの設計経験

多くのネットユーザーは、なぜ自分のウェブサイトはいつも色の問題を抱えていて、いつも地味に見え、注目を...

Angularコンポーネントの仲介モードの詳細な説明

目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...

HTML ページにミュージック ビデオを追加する例

1. ビデオタグFirefoxでは自動再生をサポートしますが、GoogleとIEではサポートしません...

いくつかのMySQL更新操作のケース分析

目次ケーススタディアカウント残高を更新する直接更新楽観的ロック方式ロックフリーソリューションキューイ...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

Docker で Nginx イメージ サーバーを構築する方法

序文一般的な開発では、画像をディレクトリにアップロードし、ディレクトリとファイル名を連結してデータベ...

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

目次序文Axiosのインストールと設定シンプルなGETリクエストを開始するPOSTリクエストを行うシ...