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 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

推薦する

VueにExcelテーブルプラグインを導入する方法

この記事では、Excelテーブルプラグインを導入するVueの具体的なコードを参考までに共有します。具...

Mysqlサーバーのインストール、構成、起動、シャットダウン方法の詳細な説明

1. 公式サイトからダウンロード: https://dev.mysql.com/downloads/...

MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解

序文MySQL マスター スレーブ レプリケーションの基本原理は、スレーブ データベースがマスター ...

よく使われる HTML タグとその特徴の完全なリスト

まず、HTML タグのいくつかの特性を知っておく必要があります。 1. 「<keyword&g...

HTML フレームセットのサンプルコード

この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。さて、ま...

IE6 で CSS スタイルの div または li の背景のタイリングと境界の破損を解決する方法

IE6 で CSS スタイルの div または li の背景のタイリングや境界の破壊を解決するには、...

VMware15.5 インストール Ubuntu20.04 グラフィック チュートリアル

1. インストール前の準備1. 公式ウェブサイトからUbuntu 20.04のイメージファイルを直接...

Vueを使用してタイマー機能を実装する

この記事の例では、タイマー機能を実装するためのVueの具体的なコードを参考までに共有しています。具体...

CSS は Alibaba ベクター ライブラリを使用して、対応する位置に見栄えの良いアイコン効果をすばやく追加します (サンプル コード)

Alibaba ベクターアイコンライブラリにアクセスAlibaba ベクターアイコンライブラリ好き...

MySQLスレーブのメンテナンスに関する経験の共有

序文: MySQL マスター/スレーブ アーキテクチャは、最も一般的に使用されるアーキテクチャ セッ...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

ZabbixはSNMPに基づいてLinuxホストを監視します

序文: Linux ホストは、エージェント プログラムをインストールする場合でも、SNMP を使用す...

geoip を使用して nginx で地域を制限する方法

このブログは仕事のメモです環境: nginx バージョン: nginx/1.14.0 Centos ...

動的な色切り替えの実装コードをサポートするために、CSS で SVG 画像を参照します。

表示する svg 画像を追加すると、React はファイルが見つからないというメッセージを表示します...