如何干净地关闭嵌入式 JRuby 以响应 JVM 进程的 SIGTERM?
我正在使用API在JRuby的JVM进程内运行一个中间人(使用Webrick)服务器。org.jruby.embed.ScriptingContainer
如果我干净地关闭并从JVM内部停止服务器,一切都按预期工作。
但是,如果我向 JVM 进程发送一个 SIGTERM(例如,通过在命令行中按 ctrl+C),控制台将返回,但 JVM 进程不会终止 - 它会无限期地挂起,直到我向它发送 SIGKILL。
我尝试注册 JVM 关闭挂钩来终止实例,但挂钩从未触发。我不知道为什么...也许JRuby正在以某种方式吞下SIGTERM?ScriptingContainer
我如何让JVM完全关闭,即使它包含正在运行的Webrick服务器?