開発メモ

Java, JS, CSS, HTML, Unity, C# のことなどを書いてます。フリーソフトや二次創作の公開もしています。

組込みJetty:JVMとサーバーの停止方法

組込み Jetty と JVM を停止する方法を書いていきます。今回のコードは、サーバー上で動いているプログラム(サーブレットなど)から実行するものになります。

停止方法1

次のようなコードで停止することができます。

Server server = ...

server.setStopAtShutdown(true);
(new Thread() {
  public void run() { System.exit(0); }
}).start();

新しいスレッドで JVM を停止する感じです。事前に Server.setStopAtShutdown(true); を実行して、サーバーも停止させるようにしておきます。

停止方法2

JVM を停止するスレッド内で、Server.stop(); を実行しても大丈夫そうです。Server.stop(); だけだと、JVMは停止されないようです。

補足. セキュリティ面について

不特定多数に公開しているサービスは、セキュリティ面を考慮したほうが良さそうです。誰でも停止処理を実行できるようにすると、攻撃を受けてサービスが提供できなくなったりする可能性があります。

参考文献

Jetty の ShutdownHandler.java - GitHub を参考にさせて頂きました。