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
2つのオプションがあります。
まず、Eclipseを使用すると、構成をわずかに変更するだけでこれを実行できます(こちらも参照してください 詳細な投稿 )
これはまだコードの変更を反映しますが、サーバーを再起動しません。
次に、長い間 FileSyncプラグイン を使用しました。
WEB-INF/classes
にすべてのクラスを送信します(これはデプロイメントアセンブリの設定とほぼ同じです)そのように私には完璧に動作します。非構造的な変更はすべて、再デプロイせずにすぐに反映されます。
更新:
ここでのホットデプロイの方法 について詳しく読むことができます。
私も プロジェクトを作成しました これは、ワークスペースをサーブレットコンテナと簡単に同期します。
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を自動リロードするように構成しました。
免責事項:私はただの幸せな顧客です、私はゼロターンアラウンドのために働きません、そして、私は決して彼らと提携していません。
JRebel -Webアプリケーションを再起動せずにコーディングできます。基本的には、クラスをインスツルメントし、変更を適応させることにより機能します。 ホットデプロイよりも多くの場合 を処理します。
商用 、( 価格設定の詳細 、2018年6月時点で550ドル/年)であり、サードパーティのフレームワーク用の多くの プラグイン :
無料試用版 は非常に簡単です。試してみることをお勧めします。
Eclipseのワークスペースを\ Tomcat\webappsに変更します。これは作業用であるため、正常に機能するはずです。 Eclipseで行った変更は、Tomcatがデプロイするアプリケーションを探すディレクトリと同じです
サーバービューで、新しいサーバーを作成し、まだサーバーにリソース(プロジェクト)を追加しないでください。サーバーの場所にあるサーバーをダブルクリックします。 「Tomcatインストールを使用」を選択します。 「デプロイパス」をTomcatデプロイディレクトリに変更します(例:c:\ server\Tomcat 7.0.14\webapps)。 「発行セクション」を拡張します。 [ビルドイベント後に自動的に公開する]をオンにします。保存して閉じます。 Eclipseメニューから「プロジェクト->自動的にビルド」をチェックします。サーバービューから、サーバーを右クリックし、[追加と削除]をクリックして、プロジェクトを公開します。
これが開発専用の場合、Eclipseで統合されたTomcatサーバーを使用しないのはなぜですか?サーバーは、window-> preferencesで構成できます。 page.jspというjspがある場合は、設定したら、それを右クリックして[サーバーで実行]を選択できます。プリファレンス->一般-> Webブラウザで、内蔵ブラウザまたは外部ブラウザを使用する天気を選択できます。 jspにいくつかの変更を加え、ブラウザからページを保存して更新します。ブラウザを保存して更新すると、変更が自動的に反映されます。
ここで私にとってうまくいくのは:
このような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)クラスのホットデプロイを取得しました!!!
開発環境では、Tomcatサーバーを指定して、開発中のディレクトリでJSPを検索するだけです。ファイルを保存するとすぐに、変更を確認できます。
Spring Loaded JVMエージェントを使用して、開発環境でこれを機能させることができました。私はSpring Webアプリケーションを開発していますが、そのプロジェクトの説明では、
jVMで実行される可能性のあるバイトコードで使用可能
次のセットアップを使用して、接続されたTomcatインスタンスに自動的に公開するための変更を取得できました(通常のEclipse WTPメソッド)。 Eclipse Mars.2(4.5.2)をベースにしたSpring Tool Suite 3.7.3を使用しています。
-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リリースを使用しますが、これは機能しませんでした。
以下のオプションを使用できますか? Eclipseの[サーバー]-> [サーバーの場所]-> [Tomcatインストールを使用]をダブルクリックします。 Tomcatのインストールを制御します。 Javaクラスの変更のためにサーバーを再起動する必要はありません。
私は最も簡単な方法を見つけました:シンボリックリンクの使用:同期がまったくないため、これが最速の方法だと思います。Tomcatディレクトリとプロジェクトディレクトリは常に同じディレクトリになります。
Tomcatは定期的に変更を検出し、アプリケーションを再デプロイします。
アプリケーションをデバッグする方法もあるので、謙虚に良い解決策だと思います。
私は自分の解決策を文書化しました here 、興味のある人のために。
場合には、急いでいる:
出来上がり! :)
これは最善の方法ではないかもしれませんが、私には有効です。
Rsyncコマンドを使用して、jspプロジェクトからの変更を$ contextPathに同期します。
TomcatのEclipseでリモートデバッグを使用すると、コードのホットスワップが制限されます。静的フィールドを変更するか、メソッドを追加する場合、jarをエクスポートしてコンテキストを再起動する必要があります。
Eclipseで、トップメニューの[プロジェクト]をクリックし、[自動的にビルド]が選択されていることを確認します。これで問題が解決しました。ワークスペースメタデータを使用してTomcatでEclipseを実行していました。また、ダイナミックWebモジュールプロジェクトでMavenを実行していました。確認するには、アプリケーションをTomcatに追加します。 Eclipse内からTomcatを起動します。アプリケーションがデプロイされ、実行されていることを確認してください。 Eclipseで[コンソール]タブを開きます。アプリケーションに変更を加えます。数秒後に、変更が自動的にビルドされ、Tomcatにデプロイされるのが見えるはずです。
開発目的でJettyを使用することはできますか?
その場合、Mavenを使用するのは非常に簡単です- mvn jetty:run