0
私はGrizzly NIOに基づいたシンプルなサーバを持っています。私は次のようにそれをシャットダウン/起動、シャットダウン方法の近くにコメント何卒ご了承下さいよ:私はserver.shutdown()行が代わりに達したことはありませんので、それはすぐにシャットダウンを取得し、サーバを終了する場合並行性の過誤によりサーバが正常にシャットダウンしない
public class MyServer {
public static void main(String[] args) {
try {
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create("someURL"), resourceConfig, false);
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
server.shutdownNow();
}));
server.start();
Thread.currentThread().join();
server.shutdown(); //this line is never reached
} catch (IOException | InterruptedException ex) {
//exception handling
}
}
}
を優雅なやり方。つまり、私はシャットダウンフックを実装しようとしましたが、どちらも呼び出されていませんでした。私は自分のjoin()実装を疑っていますが、それについてはわかりません。グレースフルシャットダウンを達成するための助けがあれば感謝します。
あなたはそれを処理する正しいメカニズムを提案しますか? –
@johndoe私はなぜそこにそれがあるのかわかりません。あなたはメインで走っているので、参加する必要はありません。 –
それはサーバー実装なので、私はGrizzlyのAPIを使用しています。私はそれを開始してから、正常にシャットダウンしたいと思っています。 –