web-dev-qa-db-ja.com

TomcatとEclipseをホットデプロイ環境として統合する

EclipseとTomcatを統合してセットアップし、JSPとサーブレット(可能な場合)への変更がデプロイメントを必要とせずに即座に反映されるようにします。

OK、これはインターネット全体でたくさんの答えがある質問の1つですが、すべて異なっているようです。 (Sysdeoプラグインを使用し、JBOssプラグインを使用し、古いEclipseを使用して、代わりにMyEclipseを使用するなど)、参照する決定的なリソースが1つ見つかりませんでした。だから私の利益のために、これを設定する最も簡単で最も推奨される手順は何ですか?

これは、EclipseとTomcatが独立して実行されていることを前提としています。私は実際に、こちらの手順を使用して、非ホットデプロイ方式でそれらを統合しました。 http://www.ibm.com/developerworks/opensource/library/os-Eclipse-Tomcat/index.html

Eclipseバージョンバージョン:3.4.2(Ganymede)Tomcat v6.0.20

87
udit

2つのオプションがあります。

まず、Eclipseを使用すると、構成をわずかに変更するだけでこれを実行できます(こちらも参照してください 詳細な投稿

  • サーバーリストにTomcatを追加する
  • プロジェクトを「動的Webプロジェクト」にする(作成ウィザードまたは設定のファセットセクションを使用)
  • プロジェクトをTomcatに追加し、「展開アセンブリ」を構成します
  • リストからTomcatをダブルクリックして構成を開きます
  • [発行]を[自動的に発行しない]に変更します(これは、ctrl + sを押してもサーバーが再起動されないことを意味します)
  • tomcatをデバッグモードで起動します

これはまだコードの変更を反映しますが、サーバーを再起動しません。

次に、長い間 FileSyncプラグイン を使用しました。

  • プラグインを設定して、ビンディレクタからTomcatインストールのWEB-INF/classesにすべてのクラスを送信します(これはデプロイメントアセンブリの設定とほぼ同じです)
  • 他のすべてのリソースをそれぞれの場所に移動するように構成します
  • オプションで、filesyncロケーション設定から単一変数へのすべての絶対パスを外部化し、その変数をEclipseで構成します(したがって、すべてのメンバーがEclipseを使用している場合は、filesync設定もコミットできます)
  • eclipseのサーバーリストにTomcatを追加し、「サーバーの場所」オプションを「Tomcatインストールを使用」に設定します(サーバーリストからTomcatをダブルクリックすると画面が開きます)
  • tomcatをデバッグモードで起動します

そのように私には完璧に動作します。非構造的な変更はすべて、再デプロイせずにすぐに反映されます。

更新:
ここでのホットデプロイの方法 について詳しく読むことができます。
私も プロジェクトを作成しました これは、ワークスペースをサーブレットコンテナと簡単に同期します。

73
Bozho

Eclipseでクラスファイルを$ Tomcat/webapps/MyWebApp/WEB_INF/classesディレクトリに直接書き込むだけです。次に、Apache-Tomcatを設定して、クラスファイルが更新されているかどうかを確認し、更新されている場合はリロードします。

クラスが変更されたときにクラスを自動リロードするようにTomcatを構成するには、以下を行う必要があります。

編集$Tomcat/conf/context.xmlおよび設定:

<Context reloadable="true"> 

また、webapps/$YourWebApp/web.xmlファイルとインクルード:

<web-app reloadable="true">

両方の変更が必要かどうかは思い出せませんが、Tomcat-6.0.18を自動リロードするように構成しました。

29
Martin Tilsted

免責事項:私はただの幸せな顧客です、私はゼロターンアラウンドのために働きません、そして、私は決して彼らと提携していません。

JRebel -Webアプリケーションを再起動せずにコーディングできます。基本的には、クラスをインスツルメントし、変更を適応させることにより機能します。 ホットデプロイよりも多くの場合 を処理します。

  • メソッドの追加/削除
  • コンストラクターの追加/削除
  • インターフェースの変更
  • 実装されたインターフェースの追加/削除

商用 、( 価格設定の詳細 、2018年6月時点で550ドル/年)であり、サードパーティのフレームワーク用の多くの プラグイン

  • Guice
  • ストラット2

無料試用版 は非常に簡単です。試してみることをお勧めします。

8
Robert Munteanu

Eclipseのワークスペースを\ Tomcat\webappsに変更します。これは作業用であるため、正常に機能するはずです。 Eclipseで行った変更は、Tomcatがデプロイするアプリケーションを探すディレクトリと同じです

3
PaganSensei

サーバービューで、新しいサーバーを作成し、まだサーバーにリソース(プロジェクト)を追加しないでください。サーバーの場所にあるサーバーをダブルクリックします。 「Tomcatインストールを使用」を選択します。 「デプロイパス」をTomcatデプロイディレクトリに変更します(例:c:\ server\Tomcat 7.0.14\webapps)。 「発行セクション」を拡張します。 [ビルドイベント後に自動的に公開する]をオンにします。保存して閉じます。 Eclipseメニューから「プロジェクト->自動的にビルド」をチェックします。サーバービューから、サーバーを右クリックし、[追加と削除]をクリックして、プロジェクトを公開します。

3
ticu0000

これが開発専用の場合、Eclipseで統合されたTomcatサーバーを使用しないのはなぜですか?サーバーは、window-> preferencesで構成できます。 page.jspというjspがある場合は、設定したら、それを右クリックして[サーバーで実行]を選択できます。プリファレンス->一般-> Webブラウザで、内蔵ブラウザまたは外部ブラウザを使用する天気を選択できます。 jspにいくつかの変更を加え、ブラウザからページを保存して更新します。ブラウザを保存して更新すると、変更が自動的に反映されます。

2
Jared

ここで私にとってうまくいくのは:

このようなcontext.xml:

<Context path="/myapp" docBase="myapp" debug="5"
    reloadable="false" antiResourceLocking="false" antiJARLocking="true">
<!-- this because i´m using Spring 3.1 with Tomcat -->
    <Loader     loaderClass="org.springframework.instrument.classloading.Tomcat.TomcatInstrumentableClassLoader" />

</Context>

次に、Eclipseの[サーバー]タブの[モジュール]タブで、デプロイするすべてのモジュールの[自動再読み込み]を無効にしました。

また、デフォルトの構成で自動公開を許可します。

また、MavenをWTPで使用している場合、src/main/resourcesのコンテンツを残すことを忘れないでください。これは、Eclipseが最終ビルドのこのフォルダーのコンテンツを除外することを要求しているためです。

このすべての場合にのみ、リソースのホットデプロイでフル(VM)クラスのホットデプロイを取得しました!!!

2
chuckedw

開発環境では、Tomcatサーバーを指定して、開発中のディレクトリでJSPを検索するだけです。ファイルを保存するとすぐに、変更を確認できます。

1
Cameron

Spring Loaded JVMエージェントを使用して、開発環境でこれを機能させることができました。私はSpring Webアプリケーションを開発していますが、そのプロジェクトの説明では、

jVMで実行される可能性のあるバイトコードで使用可能

次のセットアップを使用して、接続されたTomcatインスタンスに自動的に公開するための変更を取得できました(通常のEclipse WTPメソッド)。 Eclipse Mars.2(4.5.2)をベースにしたSpring Tool Suite 3.7.3を使用しています。

  1. Githubプロジェクト からSpring Loadedの最新リリースJARをダウンロードします。これは、springloaded-1.2.5.RELEASE.jarでテストされています。
  2. Eclipseで通常どおりTomcatサーバーをセットアップします(Tomcat 8.0.30でテスト済み)
  3. EclipseでTomcatサーバーの構成ページを開きます([サーバー]タブ内のサーバーインスタンスをダブルクリックします)。
  4. [サーバーオプション]セクションで、[デフォルトでモジュールの自動再読み込み]のチェックを外します。
    • 注:既にサーバーにWebモジュールを追加している場合は、[モジュール]タブ(構成ページウィンドウの下部)を使用してWebモジュールを個別に無効にする必要があります。
  5. [一般情報]セクションで、[起動構成を開く]をクリックします。
    • [引数]タブで、[VM引数]の最後に次を追加します。_-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify_
    • プロジェクトの_.class_ファイルに加えてJARを監視できるようにするには、 この問題のコメント ごとに_-Dspringloaded=watchJars=_ VM引数)を構成します。

サーバーを起動し、通常どおりに動的Webアプリケーションプロジェクトを公開します。繰り返しますが、Spring Webアプリケーションでこれをテストできました。たとえば、@ Controllerクラスのコードの変更、メソッドの追加/減算などは、ファイルを保存してEclipseをビルドし、変更されたクラスを公開した後、ほぼ瞬時に適用されました。最後に、Spring LoadedプロジェクトのFAQセクションでは、物事がリロードされないいくつかのケースが言及されていたため、サーバー/アプリケーションの再起動が必要になります。 。

もう1つの注意:これは、組み込みのPivotal tcサーバーまたはSTSに付属するVMware vFabric tcサーバーでは機能しません。これらのサーバーには、「Enable Java Agent-based reloading(experimental)」オプションがありますが、Spring Loadedの古い1.2.0リリースを使用しますが、これは機能しませんでした。

1
martian111

以下のオプションを使用できますか? Eclipseの[サーバー]-> [サーバーの場所]-> [Tomcatインストールを使用]をダブルクリックします。 Tomcatのインストールを制御します。 Javaクラスの変更のためにサーバーを再起動する必要はありません。

0
Tushar Sagar

私は最も簡単な方法を見つけました:シンボリックリンクの使用:同期がまったくないため、これが最速の方法だと思います。Tomcatディレクトリとプロジェクトディレクトリは常に同じディレクトリになります。

Tomcatは定期的に変更を検出し、アプリケーションを再デプロイします。

アプリケーションをデバッグする方法もあるので、謙虚に良い解決策だと思います。

私は自分の解決策を文書化しました here 、興味のある人のために。

0
Raul Luna

場合には、急いでいる:

  1. eclipseのTomcat(他のコンテナ)で「自動的に公開しない」をチェックしてください。
  2. tomcat(他のコンテナ)をデバッグモードで起動します。

出来上がり! :)

0
Sachin Verma

これは最善の方法ではないかもしれませんが、私には有効です。

  • $ Tomcat/conf/Catalina/localhost/.xml
  • $ contextPath/webapp/web/WEB-INF/lib/*。jar
  • $ contextPath/webapp/web /
  • $ eclispeWorkbench/project-servlet/src /
  • $ eclispeWorkbench/project-servlet/servlet.jardesc(jarを$ contextPathのlibディレクトリにエクスポートする必要があります)
  • $ eclipseWorkbench/project-jsp /

Rsyncコマンドを使用して、jspプロジェクトからの変更を$ contextPathに同期します。

TomcatのEclipseでリモートデバッグを使用すると、コードのホットスワップが制限されます。静的フィールドを変更するか、メソッドを追加する場合、jarをエクスポートしてコンテキストを再起動する必要があります。

0
TJR

Eclipseで、トップメニューの[プロジェクト]をクリックし、[自動的にビルド]が選択されていることを確認します。これで問題が解決しました。ワークスペースメタデータを使用してTomcatでEclipseを実行していました。また、ダイナミックWebモジュールプロジェクトでMavenを実行していました。確認するには、アプリケーションをTomcatに追加します。 Eclipse内からTomcatを起動します。アプリケーションがデプロイされ、実行されていることを確認してください。 Eclipseで[コンソール]タブを開きます。アプリケーションに変更を加えます。数秒後に、変更が自動的にビルドされ、Tomcatにデプロイされるのが見えるはずです。

0
NLessani

開発目的でJettyを使用することはできますか?

その場合、Mavenを使用するのは非常に簡単です- mvn jetty:run

0
matt b