我们有一个依靠Tomcat服务器的elixir应用程序。我们当前的策略是在应用程序启动时通过.war
调用来启动System.cmd
文件。这可行,但是如果应用程序(或更具体地说,运行启动命令的GenServer)退出,我们也想关闭服务器。如何在退出前赶上GenServer的出口并运行另一个System.cmd
调用?
答案 0 :(得分:2)
您需要在其中实现terminate/2回调。
您甚至可以在这里处理各种类型的终止原因,例如:normal
,:shutdown
或其他自定义原因。您只需要以下内容:
module MyServer do
use GenServer
# ...
def terminate(reason, state) do
# System call goes here
System.cmd "echo", ["I'll be back"]
end
end