21

Java EE 7 に eclipse kepler を使用しようとしています。すでに JBoss Tools をインストールし、JBoss Wildfly をサーバーとして正常に追加しました。ただし、私の変更は自動的に展開されません。グラスフィッシュを使用するときと同じように、アプリを自動的にデプロイできる方法はありますか?

4

5 に答える 5

31

Eclipse を使用して、WildFly サーバーを 2 回クリックして、次のプロパティを編集します。

  1. 発行: [ビルド イベント後に自動的に発行する] を選択します。公開間隔も 1 秒に変更したいと思います。
  2. Application Reload Behavior : [Customize application reload ...] チェックボックスをオンにし、正規表現パターンを編集して\.jar$|\.class$

それでおしまい。幸運を!

于 2014-02-25T18:30:01.540 に答える
23

@varantes と @Sean はどちらも本質的に正しいですが、これらの回答は完全ではありません。

残念ながら、Java サーバー環境でダウンタイムなしの完全なホット デプロイメントを実現する唯一の方法は、有料の JRebelまたは無料のスプリング式ツールを使用することです。

ただし、小規模なプロジェクトの場合、部分的なホット デプロイによって作業を高速化する方法がいくつかあります。基本的に:

  1. リソースが変更されたときに自動的に公開する オプションを有効にすると、ブラウザを更新するとすぐ*.htmlにファイルが反映されます。*.xhtml
  2. *.jspファイルに対してもホット デプロイメントを機能させるには、 ${wildfly-home}/standalone/configuration/standalone.xml内で 次の変更を行う必要があります
    <jsp-config/>

    <jsp-config development="true"/>

サーバーを再起動し、Web ファイルのホット デプロイメントをお楽しみください。


ただし、*.javaソース ファイルを変更する場合は、部分的なホット デプロイメントしかできません。@varantes が回答で述べたように、正規表現パターンを に設定してApplication Reload Behavior\.jar$|\.class$を有効にすることはオプションですが、重大な欠点があります。モジュール全体が再起動されるため、次のようになります。

  1. しばらく時間がかかります (モジュールの大きさによって異なります)。
  2. アプリケーション全体の状態が失われます。

したがって、個人的には、このソリューションはお勧めしません。JVM は、(デバッグ モードで) メソッド本体のコード スワップをサポートします。したがって、既存のメソッドの本体のみを変更している限り、自宅にいることができます (ダウンタイムはゼロで、変更はすぐに反映されます)。ただし、サーバー設定内で自動公開を無効にする必要があります。そうしないと、その再公開によってアプリケーションの状態が破壊されます。

ただし、Java コードを大量に作成している (クラス、注釈、コンストラクターを追加している) 場合は、残念ながら、セットパブリッシュを [自動的にパブリッシュしない] (またはサーバーをシャットダウンする) にし、Java ファイルでの作業が終了したら、手動でモジュールを再起動することをお勧めします (またはサーバーの電源を入れます)。君による。


これは小規模な Java プロジェクトでは機能しますが、大規模なプロジェクトでは、JRebel は非常に価値があります (または単なるスプリング ロードです)。また、このような問題があるため、Rails/Django/Play! フレームワークは非常に大きな人気を博しました。

于 2014-09-10T09:07:06.380 に答える
0

サーバーをデバッグモードで起動すると、メソッド内の可能性が追跡されます。その他の変更 サーバーの再起動を求められます。

于 2017-01-21T15:58:16.307 に答える