開発ツール 講義 27: Idea ホット ロード プラグイン JRebel のアクティブ化と使用

開発ツール 講義 27: Idea ホット ロード プラグイン JRebel のアクティブ化と使用

開発ツール編の第27回目となる今回は、Idea-JRbelと統合されたホットローディングプラグインについて紹介します。ただし、このプラグインは有料です。ここでは、アクティベーションと使用方法の詳細なチュートリアルと、Wave について説明します。プロテストあります!

1. 背景

Java 開発の分野では、ホット デプロイメントは常に解決が難しい問題でした。現在の Java 仮想マシンは、devtool を使用してホット デプロイメントを実現するなど、メソッド本体の変更のホット デプロイメントのみを実装できますが、機能も制限されています。メソッドが追加されたり、メソッド パラメータが変更されたりした場合、ホットデプロイメントは有効になりません。したがって、クラス全体の構造を変更するには、仮想マシンを再起動し、クラスを再ロードして更新操作を完了する必要があります。一部の大規模なアプリケーションでは、再起動するたびに時間がかかります。

2. ホットデプロイメントの原理

基本的な原則は、2 つの ClassLoader を使用することです。1 つの ClassLoader は変更されないクラス (サードパーティの Jar パッケージ) をロードし、もう 1 つの ClassLoader は変更されるクラス (再起動 ClassLoader と呼ばれます) をロードします。このようにして、コードが変更されると、元の再起動 ClassLoader は破棄され、再起動 ClassLoader が再作成されます。ロードされるクラスの数が少ないため、再起動時間が短縮されます。

3.Jrebelプラグインのダウンロード

まず、Idea で設定 -> プラグインを見つけ、MarketPlace でプラグインを検索します。
ここに画像の説明を挿入

「適用」をクリックした後、必要に応じて Idea を再起動し、ダウンロードした Jrebel プラグインを有効にします。

この時点で、Jrebel インストール ガイドが Idea メイン インターフェイスのサイドバーに表示されます。

画像

その後、Jrebel インストール ガイドに従ってインストールできます。

4.Jrebelをアクティブにする

インストールの最初のステップでは Jrebel のアクティベーションが必要ですが、ここでは最初のアクティベーション方法をお勧めします。

画像

次に、ライセンス サーバー アドレスを設定する必要があります。ここでは、JrebelBrainsLicenseServerforJava のアクティベーション jar パッケージを通じて実装します。サーバー上で jar パッケージを実行することで、独自のサーバーをライセンス サーバー アドレスとして使用できます。jar レポートのアドレスはリンクから取得されます: リンク: https://pan.baidu.com/s/1JCr8yZyZaN1yZLAdYg5Fxw?pwd=6688 抽出コード: 6688。jar パッケージを入手するために私とプライベートにチャットすることもできます。

サーバー、特に Tencent Cloud、Alibaba Cloud などに配置されている場合は、サーバー ファイアウォール、セキュリティ グループ ポリシー、および Linux システム ファイアウォールのポート 1008 を忘れずに開いてください。サーバーがなくても、自分のコンピューターを使用できます。ただ、jar パッケージを常に実行できるわけではありません。

java コマンドを使用して jar パッケージを実行します。

java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependency.jar -p 1008 &

C:\Users\qiwnejie>java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
2023-02-05 11:00:30.612:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT
2023-02-05 11:00:31.107:INFO:oejs.AbstractConnector:Started [email protected]:1008
License Server started at http://localhost:1008
JetBrains Activation address was: http://localhost:1008/
JRebel Activation address was: http://localhost:1008/{
    
    tokenname}, with any email.

ここでは、jar パッケージが正常に実行されており、JRebel アドレスには {tokenname} も必要であることがわかります。これはGUIDS オンライン取得ツールを通じて取得できます。ランダムなトークン名の値を取得します。古い場合は、更新して生成してください。

画像

次に、最終的なライセンス サーバーのアドレスを入力します。

http://192.168.98.1:1008/fab341e4-f267-41df-ad7d-d37a3952e710

注: ここでは、jar パッケージのオープンポート 1008 を追加します。

次に、利用可能な電子メール アドレスを入力するだけです。クリックして有効にすると成功します。

画像

Jrebel は現在は正常に使用できますが、数日以内にアクティベーションに失敗して使用できないというメッセージが表示されることが多く、jar パッケージの実行が終了した後でもアクティベーションに失敗します。その理由は、Jrebel がアクティベートされた後、デフォルトでインターネット上で使用されるためであり、このモードでは、Jrebel はインターネット上のアクティベーション情報を常に監視します。オフラインで使用できるように調整するには、Jrebel の設定を入力し、Work offfile ボタンをクリックするという操作方法になります。オフラインモードにしてください。

さらに、手動ホットデプロイメントの平均間隔時間をここで設定することもできます。
ここに画像の説明を挿入

これでアクティベーションが完了します。

ただし、現時点ではこの設定だけではまだ機能が正常に利用できません。Idea で自動コンパイルを設定する必要もあります。

5.自動コンパイルの設定

設定 -> ビルド、実行 -> コンパイラーを見つけて、プロジェクトを自動的にビルドするにチェックを入れます。
ここに画像の説明を挿入

次に、設定->詳細設定を見つけて、コンパイラーを確認します

開発されたアプリケーションが現在実行されている場合でも、自動メイクの開始を許可する
画像

ここでは idea2022.1.1 バージョンに基づいて設定を行っており、基本的に設定は完了です。

6. ローカルでのホット展開と使用

Jrebel を構成した後、それをローカルで使用する場合は、Idea インターフェースの左下隅にある Jrenel パネルから独自のプロジェクトをセットアップできます。

ここに画像の説明を挿入

左側のアイコンはローカル ホット デプロイメントに対応し、右側のアイコンはリモート ホット デプロイメントに対応します。

チェックが成功すると、プロジェクトまたはモジュールの src/resource ディレクトリに rebel.xml ファイルが生成されます。

メインのスタートアップ クラスとランニング バーにも、Jrebel のランニング アイコンが表示されます。

ここに画像の説明を挿入

一部の更新効果が起動後に有効ではないことが判明した場合は、起動クラスで更新リソースの構成を構成してみることもできます。
ここに画像の説明を挿入

すべての設定が完了したら、まず試してみることができます。初めて実行するときは、再コンパイル、パッケージ化、および実行する必要があります。有効にならない場合は、一度アイデアを再起動すれば、通常は再起動後に有効になります。

7. リモートホットデプロイメント

リモート ホット デプロイメントでは、サーバーに JRebel をインストールしてデプロイする必要があります。成功したら、リモート接続用のパスワードを設定する必要があります。JRebel のルート ディレクトリで次のコマンドを実行します。

java -jar jrebel.jar -set-remote-password 123456

ここで設定する 123456 は、IDEA がサーバーに接続するときに必要なリモート パスワードです。

この時点で、Spring Boot プロジェクトを Jar にパッケージ化してサーバーにアップロードし、次のコマンドを実行してプロジェクトを開始します。

nohup java -agentpath:/www/server/jrebel/lib/libjrebel64.so  -Drebel.remoting_plugin=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9083 -jar xxx.jar &

libjrebel64.so ファイルは、JRebel の lib ディレクトリにあるファイルです。-Xdebug の後、-jar の前にあるこれらのコマンドはリモート デバッグを有効にし、必要がない場合は削除できます。

この時点で、IDEA で、次に示すように、[ファイル] -> [設定] -> [JRbel&XRebel] -> [JRbel リモート サーバー] を開き、開始したばかりのリモート プロジェクトへの接続を設定する必要があります。

ここに画像の説明を挿入

次のように進めます。

1. + 記号をクリックしてサービスを追加します

2. 情報を入力します

  • サーバー名 ランダムにサービス名で始まります

  • サーバー URL 形式: http://ip :port、ip はサーバーの IP、port はプロジェクトのポート番号 (デフォルトでは 8080) です。

  • リモート パスワードは、上記で設定した JRebel パスワード 123456 です。

3. [OK] をクリックして正常に追加します。

上記の設定が成功したら、右上隅のリモート デプロイメント ボタンをクリックします。下図の②のボタンをクリックすると、サーバー上で開始されたプロジェクトのコードが自動的に更新され、ローカルでの変更がサーバー上で自動的に有効になります

画像

ローカルで変更がある限り、リモート ホット デプロイメント ボタンをクリックすると、コードが自動的にサーバーにアップロードされ、プロジェクトを再起動しなくてもリアルタイムで更新されます。

注: たとえば、マルチモジュール開発の場合、api (最終的な Jar パッケージ)、commons (パブリック パッケージ)、service (ビジネス層パッケージ) に分割され、サーバー側で最後にパッケージ化されて実行されるのは API モジュールで、他の 2 つのモジュールは依存モジュールです。これらは JRebel リモート ホット デプロイメント オプションでチェックされていますが、コードの変更はサーバー側では有効になりませ

これを解決するにはどうすればよいでしょうか?

非常に簡単で、API プロジェクトの下の rebel-remote.xml ファイルに他の 2 つのモジュールを追加します。デフォルトのものは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?><rebel-remotexmlns="http://www.zeroturnaround.com/rebel/remote">
<id>xx.xx.xx.api</id>
</rebel-remote>

追加後のコードは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?><rebel-remotexmlns="http://www.zeroturnaround.com/rebel/remote">
<id>xx.xxx.xx.api</id>
<id>xx.xx.xx.service</id>
<id>xx.xx.xx.core</id>
</rebel-remote>

上記ラベルはモジュール(パッケージ)のパッケージ名を指定します。

さて、Jrebelプラグインの有効化と使用が完了し、楽しく使用できます〜

おすすめ

転載: blog.csdn.net/qq_28959087/article/details/131826062
おすすめ