मेरे पास conf/
निर्देशिका में एक कॉन्फ़िगरेशन फ़ाइल servers.conf
है जो मेरे सर्वर नियंत्रक द्वारा पढ़ी जाती है जब भी रूट /servers
मारा जाता है। यह निष्पादक नहीं है क्योंकि फ़ाइल को बदले जाने पर प्रत्येक क्रमिक हिट पर कॉन्फ़िगरेशन फ़ाइल को दोबारा पढ़ने की आवश्यकता होती है। अगर कॉन्फ़िगरेशन फ़ाइल में कोई समस्या है, तो मैं पेज हिट पर अपवाद फेंकने के बजाय उपयोगकर्ता ASAP को बता सकता हूं।मैं स्कैला प्ले फ्रेमवर्क में सर्वर स्टार्टअप पर एक क्रिया कैसे करूं?
वर्तमान में मैं अपने ServerController.scala
में यह है:
case class Server(ip: String, port: String)
/**
* This controller creates an `Action` to handle HTTP requests to the
* application's server page.
*/
@Singleton
class ServerController @Inject() extends Controller {
/**
* Create an Action to render an HTML page with a the list of servers.
* The configuration in the `routes` file means that this method
* will be called when the application receives a `GET` request with
* a path of `/servers`.
*/
def index = Action {
val serverList = ConfigFactory.load().getConfigList("servers")
val servers: List[Server] = serverList match {
case null => Nil
case _ => serverList map { s =>
Server(s.getString("ip"), s.getString("port"))
} filter { s =>
s.ip != null && s.port != null
}.toList
}
Ok(views.html.servers(servers))
}
}
मेरा लक्ष्य सर्वर स्टार्टअप पर कॉन्फ़िग फ़ाइल पढ़ा है और जब मार्ग मारा जाता है ServerController को सर्वर की सूची पारित करने के लिए है अगर कोई हैं कॉन्फ़िगरेशन फ़ाइल में पढ़ने में समस्याएं। यदि समस्याएं हैं, तो मुझे तत्काल फेंकने का अपवाद चाहिए।
मुझे अपने आवेदन के लिए एक प्रविष्टि बिंदु नहीं मिल रहा है, हालांकि, मुझे नहीं पता कि स्टार्टअप पर कार्रवाई कैसे करें।
क्या कोई यह जानता है कि यह कैसे करें? मैं Play 2.5.x का उपयोग कर रहा हूँ।
आप किस संस्करण का उपयोग कर रहे हैं? – Anton
@ एंटोन क्षमा करें। सवाल संपादित किया। – erip
क्या आपने इंडेक्स फ़ंक्शन के बाहर कोड के पूरे ब्लॉक को डालने पर विचार किया है? (यह तब निष्पादित होता है जब नियंत्रक केवल एक बार लॉन्च होता है, यानी उस नियंत्रक को किए गए किसी भी HTTP अनुरोध) – dlite922