2011-01-15 18 views
30

कभी-कभी ढांचे को विस्तारित करना आवश्यक है। कभी-कभी अनुरोध/प्रतिक्रिया जीवन चक्र में हुक करना आवश्यक होता है, उदाहरण के लिए पैरामीटर बाध्यकारी या सुरक्षा मॉड्यूल लिखना। प्लेफ्रेमवर्क 1.x में यह कैसे किया जा सकता है?playframework का विस्तार कैसे करें?

उत्तर

43

प्ले 1.x का विस्तार करने के दो तरीके हैं। सबसे पहले आप अपना खुद का मॉड्यूल लिख सकते हैं। यह विस्तार से वर्णन किया गया है here। यह उपयोगी है अगर आप iText जैसी लाइब्रेरी प्रदान करना चाहते हैं या एक विशेष प्रमाणीकरण तंत्र प्रदान करना चाहते हैं।

दूसरा तरीका PlayPlugin लिखना है। यह अक्सर मॉड्यूल में किया जाता है लेकिन यह एक आवश्यक शर्त नहीं है।

  1. एक वर्ग जो वर्ग PlayPlugin फैली लिखें और उसके methods में से कुछ को ओवरराइड, उदाहरण के myPackage.MyPlugin कहा जाता है के लिए: एक PlayPlugin लिखने के लिए दो चरणों की आवश्यकता।
  2. अपनी प्लगइन पंजीकृत करें। यह play.plugins नाम की एक फ़ाइल बनाकर और इसे कक्षापथ में डालकर किया जाता है। फ़ाइल में 1003:myPackage.MyPlugin जैसी रेखा होनी चाहिए।

संख्या उस क्रम को परिभाषित करती है जिसमें प्लगइन्स कहा जाता है। मैं ids> 1000 का उपयोग करने की अनुशंसा करता हूं। यदि आप इसे फ्रेमवर्क प्लगइन से पहले लोड करना चाहते हैं, तो here देखें (आईडी 1.1.1 के बाद मान्य हैं)।

यही है। प्लगइन के साथ आप क्या कर सकते हैं इसकी भावना प्राप्त करने के लिए javadoc देखें। आप हुक कर सके:

  • अनुरोध/प्रतिक्रिया चक्र
  • बाध्यकारी प्रक्रिया
  • आवेदन शुरू/रोक
  • classloading

दुर्भाग्य जावाडोक प्रलेखन कम है, लेकिन डॉन ' playframework के कोड में खुद को देखने में संकोच नहीं करते हैं। समझना आसान है और आपको अच्छे विचार देता है।

+1

महान उत्तर, niels ... सीधे प्ले-फ्रेमवर्क दस्तावेज – opensas

+2

पर जाना चाहिए मैंने आपकी विधि का प्रयास किया है, लेकिन ऐसा लगता है कि मेरी प्लगइन दो बार लोड हो गई है। मेरे लॉग sais: 14: 00: 51,454 जानकारी ~ - beforeInvocation [email protected] 14: 00: 51,454 जानकारी ~ - beforeInvocation [email protected] : भिन्न आईडी –

+3

साथ दो वस्तुओं आप ग्रहण का उपयोग करते हैं फ़ाइल 'play.plugins' को कक्षा फ़ोल्डर में कॉपी किया गया है। यदि आप ग्रहण से खेलना शुरू करते हैं, तो खेल फ़ाइल को दो बार मिलेगा और आपके प्लगइन को दो बार लोड करेगा। – niels

संबंधित मुद्दे