2016-03-28 10 views
0

Stilts stomp serverのPocをいくつか実行しています。サーバーのjvm終了を防止し、別のjvmを介して行う必要があります。ここにコードスニペットがありますグレースフルシャットダウンのコマンドラインからjvmを停止してください

public static void main(String[] args) { 
    try { 
     log.debug("Starting server..."); 
     StompServer<MockStompProvider> server = new StompServer<MockStompProvider>(); 
     server.setStompProvider(new MockStompProvider()); 
     server.addConnector(new InsecureConnector()); 
     server.start(); 
     while (true) { 
      Thread.sleep(200000); 
     } 
    } catch (Exception ex) { 
     log.error("Exception ", ex); 
    } 
} 

2つの要件があります。

  1. whileループを使用せずに上記のjvmを終了させないようにする方法はありますか?
  2. java -jar server.jar -- stopなどのコマンドを使用してjvmを停止したいとします。たとえば、jettyのようなサーバーです。 Jettyはポートを使用し、停止要求の信号を待ち受けます。簡単な方法がありますか?

2つ目のオプションは、AnchorFileを使用して、jvmを起動してファイルの存在を監視し、stop jvmを使用してそのファイルを削除することができます。

答えて

1

あなたはあなたにServerSocketを

static final int PORT = Integer.getInteger("port", 65432); 
public static void main(String[] args) { 
    if (args.length > 0) { 
     new Socket("localhost", PORT); 
     return; 
    } 

    try { 
     log.debug("Starting server..."); 
     StompServer<MockStompProvider> server = new StompServer<MockStompProvider>(); 
     server.setStompProvider(new MockStompProvider()); 
     server.addConnector(new InsecureConnector()); 
     server.start(); 
     new ServerSocket(PORT).accept(); 

    } catch (Exception ex) { 
     log.error("Exception ", ex); 
    } 
} 
+0

ボウと弟をこれを行うことができます。 – vels4j

+0

@ vels4jエラー処理を改善することができます。例えば実行中のサービスがなくても停止すると、サービスがすでに実行されていることを検出し、妥当なエラーを出します。注:これは、任意のマシンから接続すると停止します(ソースIPを確認できます) –

+0

はい、私はすべての基本的な作業を行っています。どうもありがとうございます.. – vels4j

関連する問題