EclipseでTomcatを使用していて、WebアプリケーションをEclipseで実行している間、JavaクラスまたはJSPページへの変更は、tomcatまたはアプリケーションを再起動しなくてもtomcatに直接プッシュされるように見えます。
同じように機能するように、日食の下でJettyを構成する方法はありますか?これまでのところ、コードを変更してから、手動でjettyを再起動するだけです。
「ホットデプロイメント」を有効にする ContextDeployer を使用するように jetty.xml を構成します。これは、デフォルトですでに構成されている場合があります。基本的に、Jetty は事前に決められた間隔で contexts フォルダーをスキャンします。WAR ファイルまたは war ディレクトリが変更されたことを検出すると、コンテキストが自動的に再ロードされます。
以下の例では、${jetty.home}/contexts フォルダーは、監視する Web アプリケーションを Jetty に指示するコンテキスト XML ファイルを探すように構成されています。scanInterval は 5 ミリ秒に設定されています。これは、Jetty が 5 ミリ秒ごとに変更をチェックすることを意味します。この構成は jetty.xml 内にあります。
<!-- =========================================================== -->
<!-- Configure the context deployer -->
<!-- A context deployer will deploy contexts described in -->
<!-- configuration files discovered in a directory. -->
<!-- The configuration directory can be scanned for hot -->
<!-- deployments at the configured scanInterval. -->
<!-- -->
<!-- This deployer is configured to deploy contexts configured -->
<!-- in the $JETTY_HOME/contexts directory -->
<!-- -->
<!-- =========================================================== -->
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<!-- the ContextHandlerCollection to modify once a webapp is added or removed (Allows Hot Deployment) -->
<Set name="contexts"><Ref id="Contexts"/></Set>
<!-- the directory which will contain your context.xml files -->
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
<!-- the interval in milliseconds to periodically scan the configurationDir -->
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
WebAppContext エントリも作成する必要があります。これを test.xml というファイルに配置し、そのファイルを /contexts ディレクトリ内に配置します。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/test</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set>
</Configure>
WAR ファイルではなく<Set name="war">
、実際のフォルダーを参照することに注意してください。このフォルダーには、/WEB-INF フォルダーや他のすべてのファイルなど、アプリケーションのルートが含まれている必要があります。
JSP やその他のページを即座に認識させたい場合は、WAR ファイル自体ではなく、展開された WAR から実行するように webapps フォルダー内の Web アプリケーションを構成する必要があります。その後、基本的に webapps/test フォルダーから直接ファイルを変更してコンパイルできるように、Eclipse でこの場所を指定する必要があります。
要約すると、実行している Jetty のバージョンが明確ではありませんでした。ただし、Jetty の構成はバージョンごとに大きく異なる可能性がありますが、これで始めることができます。Jetty の構成とトラブルシューティングに関する詳細なドキュメントについては、 Jetty Web サイトまたはWebtide Web サイトを参照してください。
すべてが正しく構成されたら、Jetty を再起動する必要なく、そのフォルダーからコードを直接変更してコンパイルできます。
このルールの唯一の例外は、web.xml が変更された場合です。web.xml を変更した場合は、ほとんどの場合、Jetty を再起動する必要があります。
最後に、WAR ファイルの展開を最初に無効にしていない限り、webapps フォルダー内に test.war という名前の WAR ファイルを展開しないようにしてください。コードを上書きしてしまう可能性があります。
追加のガイダンスが必要な場合は、ContextDeployers に関するこの Jetty ドキュメントや、Jetty への Web アプリケーションのデプロイが役立つことがあります。幸運を!