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

推薦する

ウェブサイトはいつ広告を掲載すべきでしょうか?

最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...

要素 UI に基づいてクエリ コンポーネントを段階的にカプセル化する方法

目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...

mysql data_dirの変更によって発生するエラー問題を解決する

今日は、新しく購入した Alibaba Cloud ECS 環境 (Ubuntu 16.04 LTS...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

CSS 兄弟要素フローティング分析の概要

float:左/右/なし; 1. 同じレベルフローティング(1)ブロックレベル要素を同じ行に表示する...

Vue-Routerのインストールと使用方法の詳細な説明

目次インストールルーティングの基本構成Vue にルーターをインストールするルーターの設定Router...

CSS 配置レイアウト (位置、配置レイアウト スキル)

1. ポジショニングとは何ですか? CSS の position 属性には、absolute/re...

Vueは商品詳細ページの商品タブ機能を実装します

この記事の例では、商品詳細ページ機能を実現するためのVueの商品タブの具体的なコードを参考までに共有...

Ubuntu 16.04 で Python 3 を使用して Django プロジェクトを作成し、実行する方法

ステップ1: Djangoプロジェクトを作成するターミナルを開き、書き込みたいプロジェクトのアドレス...

js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明注:以下のプ...

Linuxコマンド履歴の調整方法の詳細な説明

Linux システムの bash history コマンドは、以前に実行したコマンドを記憶し、再入力...

Linux で PCIe のバージョンと速度を確認する方法

PCIE には 4 つの異なる仕様があります。下の図でそのうちの 2 つを見てみましょう。マザーボー...

MySQL でスロークエリを有効にする方法の例

序文スロー クエリ ログは、MySQL で非常に重要な機能です。MySQL のスロー クエリ ログ機...