2010-04-14 8 views
5

मेरे पास वेब एप्लिकेशन में नौकरियों को शेड्यूल करने में एक प्रश्न है। अगर हमें वेब एप्लिकेशन में नौकरियां निर्धारित करना है तो हम या तो जावा उपयोग टाइमर/टाइमरटास्क या क्वार्ट्ज का उपयोग कर सकते हैं (अन्य शेड्यूलिंग तंत्र भी हैं, लेकिन मुझे क्वार्ट्ज माना जाता है)। मैं इस बात पर विचार कर रहा था कि किसने उपयोग किया है, जब मैंने साइट http://oreilly.com/pub/a/java/archive/quartz.html?page=1 पर क्लिक किया जो कहता है कि टाइमर का उपयोग करना एक बुरा प्रभाव पड़ता है क्योंकि यह अंतिम पंक्ति में कंटेनर नियंत्रण से बाहर एक थ्रेड बनाता है। अन्य पृष्ठ क्वार्ट्ज और इसकी क्षमताओं पर चर्चा करते हैं, लेकिन मैं पढ़ सकता हूं कि क्वार्ट्ज कार्यों को शेड्यूल करने के लिए थ्रेड और/या थ्रेडपूल का भी उपयोग करता है। मेरा अनुमान है कि इन धागे भी कर रहे हैं के तहत नहीं कंटेनरों को नियंत्रित हैवेबपैलिकेशन में क्वार्ट्ज

किसी को भी मेरे लिए यह स्पष्ट कर सकते हैं इसे सुरक्षित फांसी धागे या धागा ताला लगा मुद्दों बनाने के बिना मेरे वेब अनुप्रयोगों में क्वार्ट्ज उपयोग करने के लिए है? अग्रिम धन्यवाद

उत्तर

2

क्या कोई मुझे यह स्पष्ट कर सकता है क्या यह मेरे वेब अनुप्रयोगों में क्वार्ट्ज का उपयोग लटकने वाले थ्रेड या थ्रेड लॉकिंग मुद्दों के बिना सुरक्षित करना सुरक्षित है?

क्वार्ट्ज और जेडीके टाइमर दोनों अप्रबंधित धागे शुरू करते हैं जिनके पास जावा ईई प्रासंगिक जानकारी तक पहुंच नहीं है, यह सबसे बड़ा मुद्दा है। इसके अतिरिक्त, वे इसके बारे में जानने के लिए [एप्लिकेशन सर्वर] के बिना संसाधनों का उपयोग कर सकते हैं, व्यवस्थापक की उनकी संख्या और संसाधन उपयोग को नियंत्रित करने की क्षमता के बिना मौजूद हैं, और विफलता से संसाधनों को बंद करने या पुनर्प्राप्त करने के लिए एप्लिकेशन सर्वर की क्षमता में बाधा डालती है (देखें Unmanaged threads)।

ऐसा कहकर, मुझे फांसी वाले धागे या लॉकिंग मुद्दों का सामना नहीं करना पड़ा (मुझे लगता है कि यह आपके साथ क्या कर रहा है इस पर निर्भर करता है)।

यदि वास्तव में यह चिंता का विषय है, तो जेएसआर -237 टाइमर और वर्कमैनेजर कार्यान्वयन (जो प्रबंधित थ्रेड के साथ काम करता है) का उपयोग करने पर विचार करें जैसे क्वार्ट्ज या जेडीके टाइमर के बजाय Foo-CommonJ

1

दोनों दृष्टिकोणों ने अप्रबंधित धागे बनाए। मैं जावा टाइमर की बजाय शेड्यूलिंग के लिए क्वार्ट्ज का उपयोग करता हूं क्योंकि यह अधिक लचीलापन (उदाहरण के लिए क्रॉन एक्सप्रेशन) प्रदान करता है और यह बेहतर प्रबंधनीय है।

1

यदि मुझे एक पंक्ति में कहना है, तो मैं क्वार्ट्ज का उपयोग कहूंगा क्योंकि यह आपके लिए शेड्यूलिंग से संबंधित निम्न स्तर के काम को प्रबंधित करने का ख्याल रखेगा। टाइमर के साथ, आप क्वार्ट्ज करता है जो कुछ भी कर सकते हैं (यहां तक ​​कि टाइमर थ्रेड भी यह जांचने के लिए मतदान करते हैं कि वेब ऐप चल रहा है या नहीं)। लेकिन यह आपके द्वारा आपके कोड में किया जाना चाहिए। क्वार्ट्ज के साथ यह सब आप बॉक्स से बाहर निकलते हैं।

अब विवरण ताकि आप धागे की उपयुक्त संख्या बना सकते हैं और नौकरियों उसके बाद इंतजार कर क्वार्ट्ज 1. नौकरी 2. प्रबंधित थ्रेड पूल दृढ़ता प्रदान करता है। 3. आरंभिक सर्वलेट को आपके वेब एप्लिकेशन के साथ एकीकृत किया जाना है। जब ऐप बंद हो जाता है, मुझे लगता है कि यह आपके धागे को बंद करने का ख्याल रखता है, लेकिन मैंने कोशिश नहीं की है। तो मैं इस पर ज्यादा टिप्पणी नहीं करता। 4. क्लस्टर वातावरण के लिए आरएमआई आधारित शेड्यूलिंग।

अन्य भी हैं, लेकिन ये सबसे बड़े प्रेरक हैं क्यों लोग क्वार्ट्ज का अधिक बार उपयोग करते हैं।