Java EE 7 に eclipse kepler を使用しようとしています。すでに JBoss Tools をインストールし、JBoss Wildfly をサーバーとして正常に追加しました。ただし、私の変更は自動的に展開されません。グラスフィッシュを使用するときと同じように、アプリを自動的にデプロイできる方法はありますか?
5 に答える
Eclipse を使用して、WildFly サーバーを 2 回クリックして、次のプロパティを編集します。
- 発行: [ビルド イベント後に自動的に発行する] を選択します。公開間隔も 1 秒に変更したいと思います。
- Application Reload Behavior : [Customize application reload ...] チェックボックスをオンにし、正規表現パターンを編集して
\.jar$|\.class$
それでおしまい。幸運を!
@varantes と @Sean はどちらも本質的に正しいですが、これらの回答は完全ではありません。
残念ながら、Java サーバー環境でダウンタイムなしの完全なホット デプロイメントを実現する唯一の方法は、有料の JRebelまたは無料のスプリング式ツールを使用することです。
ただし、小規模なプロジェクトの場合、部分的なホット デプロイによって作業を高速化する方法がいくつかあります。基本的に:
- リソースが変更されたときに自動的に公開する
オプションを有効にすると、ブラウザを更新するとすぐ
*.html
にファイルが反映されます。*.xhtml
*.jsp
ファイルに対してもホット デプロイメントを機能させるには、 ${wildfly-home}/standalone/configuration/standalone.xml内で 次の変更を行う必要があります
<jsp-config/>
。
<jsp-config development="true"/>
サーバーを再起動し、Web ファイルのホット デプロイメントをお楽しみください。
ただし、*.java
ソース ファイルを変更する場合は、部分的なホット デプロイメントしかできません。@varantes が回答で述べたように、正規表現パターンを に設定してApplication Reload Behavior\.jar$|\.class$
を有効にすることはオプションですが、重大な欠点があります。モジュール全体が再起動されるため、次のようになります。
- しばらく時間がかかります (モジュールの大きさによって異なります)。
- アプリケーション全体の状態が失われます。
したがって、個人的には、このソリューションはお勧めしません。JVM は、(デバッグ モードで) メソッド本体のコード スワップをサポートします。したがって、既存のメソッドの本体のみを変更している限り、自宅にいることができます (ダウンタイムはゼロで、変更はすぐに反映されます)。ただし、サーバー設定内で自動公開を無効にする必要があります。そうしないと、その再公開によってアプリケーションの状態が破壊されます。
ただし、Java コードを大量に作成している (クラス、注釈、コンストラクターを追加している) 場合は、残念ながら、セットパブリッシュを [自動的にパブリッシュしない] (またはサーバーをシャットダウンする) にし、Java ファイルでの作業が終了したら、手動でモジュールを再起動することをお勧めします (またはサーバーの電源を入れます)。君による。
これは小規模な Java プロジェクトでは機能しますが、大規模なプロジェクトでは、JRebel は非常に価値があります (または単なるスプリング ロードです)。また、このような問題があるため、Rails/Django/Play! フレームワークは非常に大きな人気を博しました。
サーバーをデバッグモードで起動すると、メソッド内の可能性が追跡されます。その他の変更 サーバーの再起動を求められます。