2015-06-08 69 views
0

我想在一個tomcat web應用程序中實現一個關閉掛鉤,我無法控制。基本上,我已經實現了一個基於演員的使用​​噴射休息客戶端的庫。我已經嘗試了噴霧的典型關閉鉤,但沒有奏效。最壞的情況是說對演員系統的訪問是非法的,好像一切都已經關閉了。Tomcat關機掛鉤

我在想,如果如果一個人想叫有具體到Tomcat:

Runtime.getRuntime().addShutdownHook(new Thread() { 

    override def run() { 
     println("shutting down spray") 
     IO(Http) ! Http.CloseAll 
     IO(Http) ! PoisonPill 
     system.shutdown(); 
    } 
    }) 
+0

我可能把你的問題弄錯了。你只使用噴霧客戶端嗎?或者你也使用噴霧小工具? –

回答

1

我不認爲你需要做到這一點。

您應該在您的web.xml中註冊spray.servlet.Initializer作爲ServletContextListener

這是spray.servlet.Initializer覆蓋ServletContextListener.contextDestroyed如何從github.com/spray/spray複製

@volatile private[this] var actorSystem: Option[ActorSystem] = None 

... 

def contextDestroyed(e: ServletContextEvent): Unit = { 
    booted switchOff { 
    println("Shutting down spray application ...") 
    actorSystem.foreach(_.shutdown()) 
    actorSystem.foreach(_.awaitTermination()) 
    } 
} 

spray-servlet documentation見。