2014-11-17 38 views
1

當您在Global中覆蓋onStart時,它會阻塞運行啓動進程的線程嗎? 換句話說,我想確保Play在onStart返回之前不會啓動。Play Framework:阻止啓動線程onStart

如果情況並非如此,那麼在Play開始接受請求之前需要進行的關鍵init過程有什麼好的解決方案?

回答

2

是的,Global.onStart會在第一個請求之前阻塞。

Play中的GlobalSettings對象是一個插件。當應用程序啓動時,首先加載路由,然後通過調用各自的onStart方法連續加載插件。 GlobalSettings插件在這個初始化中最後一個,它確保所有其他插件都被首先加載,以便您的所有數據庫連接,緩存等都可用。

插件初始化阻止單個線程保證:

  1. 所有的插件都在期望防止初始化順序錯誤的確切順序初始化(如果一個插件依賴於另一個初始化首先 - 例如數據庫插件必須始終在evolutions插件之前初始化)。

  2. 所有插件在之前初始化應用程序可以開始處理請求。 (否則,例如,您將無法保證數據庫插件已準備好在第一個請求上)。