2013-06-20 5 views
9

मैं डोमिनोज़ की पुनरावृत्ति के बारे में इस सुझाव को पढ़ लिया है वस्तुओं: What is the best way to recycle Domino objects in Java BeansXPage जावा ऑब्जेक्ट रीसायकल

क्या सबसे अच्छा अभ्यास अगर मैं एक डेटा स्रोत दस्तावेज़ नाम और एक समारोह में कहा कि कई बार इस कोड को कहा जाता है है मौजूद है:

var doc=document.getDocument(true) 

और बैकएंड दस्तावेज़ में सामान करना।

इससे पहले कि मैं फ़ंक्शन से बाहर निकलूं, मुझे दस्तावेज़ रीसायकल करना चाहिए या फिर डेटासेट संसाधन के लिए मेरा बैकएंड दस्तावेज़ है?

+0

रीसाइक्लिंग के बारे में तर्क उपयोग की गई वस्तुओं को मुक्त करना है। जब http थ्रेड अनुरोध के साथ समाप्त होता है तो यह स्वचालित रूप से होता है। चक्रों में रीसायकल करना आवश्यक है, जो वस्तुओं की सीमित मात्रा में अधिक मात्रा में उपभोग करता है (सीमा पूरे डोमिनोज सर्वर/नोट्स क्लाइंट के लिए ~ 10k हैंडल है)। इसलिए, आप कुछ दस्तावेजों को रीसायकल नहीं कर सकते हैं, जब तक कि आप चक्र में अपना कोड न कहें। सत्र से जुड़ी विशेष वस्तुओं (दिनांक/समय, उपयोगकर्ता) से सावधान रहें। –

उत्तर

13

यह एक उत्कृष्ट सवाल है, क्योंकि इस "सब कुछ रीसायकल" सिद्धांत का एकमात्र अपवाद में से एक है (दो अन्य उल्लेखनीय उदाहरण है कि आप कभी नहीं वर्तमान सत्र या डेटाबेस रीसायकल चाहिए)। डेटा स्रोत के लिए बैक एंड दस्तावेज़ को रीसायकल करना एक बुरा विचार है, क्योंकि जेएसएफ लाइफसाइक्ल एक ही हैंडल प्राप्त करता है, और आप डोमिनोज़ के तहत इसे रीसाइक्लिंग कर रहे हैं। डेटा स्रोत हमारे लिए इसका ख्याल रखता है, इसलिए इसे मैन्युअल रूप से रीसायकल करने की आवश्यकता नहीं है। दूसरी ओर, आप (यानी doc.getFirstItem("someFieldName"), या आइटम मानों तिथियां दी गई हैं विशिष्ट वस्तुओं पर एक संभाल पाने के हैं, तो आप उन वस्तुओं सिर्फ स्वयं दस्तावेज़ नहीं पुनरावृत्ति करना चाहिए।

अभी तक सबसे महत्वपूर्ण परिदृश्य में जहाँ यह है जावा और एसएसजेएस ऑब्जेक्ट्स को रीसायकल करने के लिए महत्वपूर्ण पुनरावृत्ति को देखने में महत्वपूर्ण है, क्योंकि हर बार जब आप अगली प्रविष्टि या दस्तावेज़ में अग्रिम करते हैं, तो आप रीसायकल छोड़ने पर एक हैंडल लीक कर रहे हैं। ज्यादातर अन्य मामलों में, रीसाइक्लिंग अभी भी सलाह दी जाती है, लेकिन होने के करीब वैकल्पिक, क्योंकि अन्य परिचालनों के लिए समस्याओं का कारण बनने में काफी समय लगता है। लेकिन यदि आप बहुत बड़े दृश्य को फिर से शुरू कर रहे हैं, तो आप रीसायकल करना भूल जाते हैं, तो आप आसानी से एक ही पुनरावृत्ति में हैंडल से बाहर हो सकते हैं।

एक अलग विचार, हालांकि: मुझे शायद ही कभी ऐसी स्थिति दिखाई दे जहां डेटा स्रोत के बैक एंड दस्तावेज़ पर एक हैंडल प्राप्त करना सबसे अच्छा तरीका है, इसलिए मैं यह सुनिश्चित करने के लिए अपने कोड को फिर से लिखने की अनुशंसा करता हूं कि इस हैंडल को शुरू करने के लिए भी आवश्यक हो । उदाहरण के लिए, document.getDocument(true).getItemValueString("someFieldName") के बजाय, बस document.getValue("someFieldName") पर कॉल करें। लौटाया मूल्य समान होना चाहिए, लेकिन यह अधिक कुशलता से चलाएगा, और आप बैक एंड दस्तावेज़ को छू नहीं रहे हैं, इसलिए रीसाइक्लिंग कोई मुद्दा नहीं है। और यह प्रत्येक आइटम पहुंच के लिए कम टाइपिंग है, जो निश्चित रूप से समय के साथ जोड़ता है। इसी तरह, document.getDocument(true).replaceItemValue("someFieldName", "newValue") के बजाय, document.setValue("someFieldName", "newValue") विकल्प।

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