web-dev-qa-db-ja.com

Eclipse KeplerおよびJBoss Wildflyのホットデプロイメント

Java EE 7.にEclipse keplerを使用しようとしています。すでにJBoss Toolsをインストールし、JBoss Wildflyをサーバーとして正常に追加しました。ただし、変更は自動的にデプロイされません。アプリはGlassfishを使用するときと同じように自動的に展開されますか?

20
zulqarnain

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

  1. 発行:「ビルドイベント後に自動的に発行する」を選択します。公開間隔も1秒に変更したいです。
  2. アプリケーションの再読み込み動作:[アプリケーションの再読み込みをカスタマイズ...]チェックボックスをオンにし、正規表現パターンを\.jar$|\.class$に編集します

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

28
varantes

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

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

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

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

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


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

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

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

しかし、Javaコード(クラス、注釈、コンストラクターを追加)を頻繁に使用している場合)、残念ながら、セットパブリッシングをに自動的にパブリッシュすることはお勧めできません(またはサーバーのシャットダウン)およびJavaファイルでの作業が終了したら、モジュール(またはターンオンサーバー)を手動で再起動します)。


小さいJava=プロジェクトの場合は機能しますが、大きいプロジェクトの場合、JRebelは非常に貴重です(または単にスプリング式)。これは、上記のすべてのアプローチでは不十分なためです。
BTW:また、このような問題のため、Rails/Django/Play! Frameworkなどのソリューションが非常に人気を博しました。

幸運と高速コーディング!

21
G. Demecki

Wildflyの最新バージョン(執筆時点で8.0 Beta 1)を使用していることを前提としています。

Standalone.xml設定ファイルで、<jsp-config />を探します。属性development = "true"を追加すると、ホットデプロイされます。結果の構成は次のようになります。

<jsp-config development="true"/>
8
umphy

XPath = // servlet-container/jsp-config /の構成ファイルに属性(開発、チェック間隔、変更テスト間隔、再コンパイル失敗)を追加します

<servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
    <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
</servlet-container>

(WildFly-8.0.0.Finalで動作します)

4
PeterB

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

0