मैं एक जावा वेब एप्लिकेशन विकसित कर रहा हूं जो इसे वेब सेवा से लोड की गई बड़ी XML कॉन्फ़िगरेशन फ़ाइलों के माध्यम से व्यवहार करता है। चूंकि इन फ़ाइलों को वास्तव में तब तक आवश्यक नहीं किया जाता है जब तक कि एप्लिकेशन के किसी विशेष भाग तक पहुंचा नहीं जाता है, वे आलसी लोड होते हैं। जब इन फ़ाइलों में से एक की आवश्यकता होती है, तो संबंधित फ़ाइल को पुनर्प्राप्त करने के लिए webservice को एक क्वेरी भेजी जाती है। चूंकि कुछ कॉन्फ़िगरेशन फ़ाइलों को अधिक से अधिक उपयोग करने की संभावना है, अन्य लोगों की तुलना में अधिक बार मैं एक ही फ़ाइल को अनुरोध करने से बचने के लिए किसी प्रकार की कैशिंग (शायद 1 घंटे की समाप्ति समय के साथ) सेट करना चाहता हूं।जावा वेब एप्लीकेशन: कैशिंग तकनीकों को कैसे कार्यान्वित करें?
वेब सेवा द्वारा लौटाई गई फाइलें सभी सत्रों के सभी उपयोगकर्ताओं के लिए समान हैं। मैं जेएसपी, जेएसएफ या किसी अन्य फैंसी ढांचे का उपयोग नहीं करता, सिर्फ सादे सर्वलेट्स।
मेरा सवाल है, जावा वेब एप्लिकेशन के भीतर ऐसे वैश्विक, स्थैतिक कैश को लागू करने के लिए सबसे अच्छा अभ्यास क्या माना जाता है? क्या सिंगलटन वर्ग उचित है, या जे 2 ईई कंटेनरों के कारण अजीब व्यवहार होगा? क्या मुझे जेएनडीआई के माध्यम से कहीं कुछ खुलासा करना चाहिए? मैं क्या करूँगा ताकि क्लस्टर वातावरण में मेरा कैश खराब न हो (यह ठीक है, लेकिन जरूरी नहीं है, प्रति क्लस्टर सर्वर पर एक कैश है)?
उपरोक्त सूचनाओं को देखते हुए, क्या यह एक ऑब्जेक्ट को ServletContext विशेषता के रूप में कैशिंग के लिए ज़िम्मेदार रखने के लिए एक सही कार्यान्वयन होगा?
नोट: मैं स्टार्टअप पर उन सभी को लोड करने के लिए और क्योंकि यह के साथ किया जा नहीं करना चाहती है कि होगा
1)। जब भी मेरा एप्लिकेशन शुरू होता है तब webservice को अधिभारित करें
2)। मेरे एप्लिकेशन चलते समय फ़ाइलें बदल सकती हैं, इसलिए मुझे उन्हें
3) की आवश्यकता होगी। मुझे अभी भी एक वैश्विक रूप से सुलभ कैश की आवश्यकता होगी, इसलिए मेरा प्रश्न अभी भी
अद्यतन: कैशिंग प्रॉक्सी (जैसे स्क्विड) का उपयोग करना एक अच्छा विचार हो सकता है, लेकिन webservice के लिए प्रत्येक अनुरोध पोस्ट में बड़ी XML क्वेरी भेज देगा डेटा, जो हर बार अलग हो सकता है। केवल वेब एप्लिकेशन वास्तव में जानता है कि webservice के लिए दो अलग-अलग कॉल वास्तव में समकक्ष हैं।
अपने मदद के लिए धन्यवाद
धन्यवाद, लेकिन यह वास्तव में मेरे प्रश्न का उत्तर नहीं देता है। यदि मैं ईएचसीएच का उपयोग करने का फैसला करता हूं, तो मैं इसे जावा ई कंटेनर के अंदर कैसे सेट करूं ताकि यह सत्रों, विभिन्न क्लासलोडर गड़बड़ी और क्लस्टर वातावरण में ठीक से काम करे? – LordOfThePigs
मुझे विश्वास नहीं है कि स्क्विड सही समाधान होगा। यह बहुत चालाक लगता है, हालांकि मुझे विश्वास नहीं है कि webservices "अगर संशोधित" का सम्मान करेंगे – monksy