1

私は maven-jetty-plugin を使用して、Eclipse/m2eclipse で開発している WebApp をすばやく実行およびデバッグしています。正常に起動し、デバッガーを完全に使用できますが、アプリケーションを正常に停止できません。

コンソール ビューで ctrl+c を実行すると、ランチャー構成で「コンソールの割り当て」が有効になっているにもかかわらず、何もしません。

単純な Java プロジェクトでは、ctrl+c オプションが正常に機能します (Windows でテスト済み)。したがって、リモート/組み込みの jvm の問題のようです。私のアプリケーションは永続的な JMS キューを使用しているため、再起動するたびに他のサーバーのセッションを手動で強制終了する必要があります。これはあまり機敏ではありません。

問題の原因を知っている人はいますか? または、これに対するいくつかの既知の回避策がありますか?

4

2 に答える 2

6

m2eclipse プラグインを使用している場合は、Eclipse から直接 Maven を実行できます。

1デバッグ構成に移動し、mavenビルドの下で新しいエントリを作成します。
2 名前を付けます。
3 Maven プロジェクトのベース ディレクトリを選択します。
4 目標のために jetty:run と入力し、デバッグ ボタンをクリックします。

すべてが良いはずです。Eclipse内のコンソールビューからそれを殺すことができます。すべてのブレークポイントは通常どおり機能するはずです。

Eclipse からアプリケーションを正常にシャットダウンするには、次の手順を実行する必要があります。jetty プラグインの pom に次の構成を追加します。ここで重要な部分はストップキーとストップポートです。

<configuration>
    <tmpDir>target/not/necessary</tmpDir>
    <webAppConfig>
        <contextPath>/${project.name}</contextPath>
    </webAppConfig>
    <stopPort>9966</stopPort> 
    <stopKey>jetty-stop</stopKey>
</configuration>

次に、maven の別の実行構成を追加しますが、今回は目標を jetty:stop に設定します。正常なシャットダウンを実行します。

より自動化するには、目標を jetty:stop jetty:start に設定します。このようにして、プロセスが実行されていない場合、小さな警告が表示されますが、起動プロセスは続行されます。それ以外の場合、他のプロセスは正常にシャットダウンされ、サーバーが開始されます。

必要なコマンドは 1 つだけで、コンテキストの切り替えを減らす 1 つのショートカット (最後のビルドを実行) で実行できます。

于 2012-12-27T17:09:37.163 に答える
1

回避策 1

  1. コマンド プロンプトから、cd で webApp プロジェクトに移動します (たとえば、メインの pom.xml がある場所)。
  2. そこからJettyを実行しますmvn jetty:run
  3. そこから ctrl+c でのキルが機能します! (少なくとも Windows コマンドでは)

回避策 2

  1. VisualVMをインストールする
  2. 新しい VisualVM にKill Applicationプラグインをインストールします。
  3. VisualVM のリストで Jetty アプリケーションを右クリックし、「アプリケーションを強制終了」します。
于 2015-12-30T08:41:42.253 に答える