4

使用される IDE は次のとおりです。IBM Rational® Software Architect™ for WebSphere® Software バージョン: 7.5.5.3

使用するアプリ サーバーは Wbesphere 6.1 です。

サーバーの起動に約 7 ~ 8 分かかるため、この質問を投稿しています。

そのため、小さな変更を加えたとしても、アプリケーションの変更をテストするために 10 分待たなければなりません。サーバーを再起動せずに Java コードを変更してテストする方法はありますか。

提案を歓迎します!!!

ノート:

私の環境ではビルドツールを使用することは想定されていません。

4

3 に答える 3

7

サーバーを再起動せずに変更できるJRebelというプラグインがあります。

于 2012-07-16T13:14:11.410 に答える
3

Dynamic Code Evolution VMは、クラスのリロードを試みることができるJRebelのオープンソースの代替手段です。クラス全体の再定義を行い、クラス階層に加えられた変更を再ロードします。

于 2012-07-16T13:21:49.903 に答える
1

理論的には、クラスのリロードは JVM に組み込まれていますが、メソッドの本体内のコードのみを変更する限り、ほとんどの実装 (特に Oracle の) はリロード (ホット スワップ) のみです。

もう 1 つの問題は、Eclipse では WTP アダプターが連携して、変更されたクラス定義のみをデプロイする必要があることです (インクリメンタル デプロイ)。何らかの理由で、GlassFish は常に段階的な展開の大きな反対者でした。そのため、GlassFish の WTP アダプターは、最も小さな変更を加えた後でもサーバーを再起動します。

JBoss は以前は段階的な展開の支持者でしたが、AS 7 (「すべてを変更する必要がある」) 以降は、「サーバーの再起動」派の信奉者でもあります。

さらに別の問題は、単純なクラスのロードは多くの場合、ストーリーの一部にすぎないということです。EJB、JSF、JPA、および他の多くのフレームワークでは、クラスもフレームワークによって再登録する必要があり、キャッシュをクリアする必要があります。

これが、JRebel のようなものが登場する場所です。クラスに対するほぼすべての種類の変更をリロードします。また、WTP アダプターとは独立して動作するため、再起動が今日流行で明日は不自由なのか、それともまったく逆なのかというサーバー ベンダーの気まぐれから解放されます。JRebel には、多くのフレームワークの知識とプラグインもあります。

残念ながら、JRebel は完璧ではなく、失敗することもありますが、全体的にはうまく機能します。

もう 1 つアドバイスがあります。最新のアプリケーション サーバーのほとんどは、比較的高速なハードウェアでは 1 秒で起動し、小さなアプリケーションでは 1 秒、大規模なアプリでは 10 秒ほどで起動します。それらとセッションのシリアル化により、 JRebel のようなものはもうほとんど必要ありません。

于 2012-07-16T19:47:05.533 に答える