2009-12-03 11 views
6

में संग्रहीत जेएसपी की सेवा करें मैं एक जेएसपी पेज को सर्वर पर संग्रहीत करना चाहता हूं जो ब्लॉब के रूप में डेटाबेस में संग्रहीत है। तो यदि url http://mydomain.com/app/list.jsp पर कोई अनुरोध आता है तो मुझे संसाधन सूची पुनर्प्राप्त करने के लिए डीबी पर जाना है। Jsp।डीबी

मैं वसंत और टाइल्स का उपयोग कर रहा हूं, इसलिए एडिसपैचर सर्वलेट और नियंत्रक पारंपरिक अर्थ में स्थापित और काम कर रहे हैं। क्या यह संसाधन सर्वलेट के सिद्धांत में समान होगा कि वसंत वेब को जार्रिप फाइलों और संदेशों को जार के भीतर से सेवा देना है?

ध्यान दें कि जेएसपी केवल स्थिर HTML नहीं होगा, मेरे पास पृष्ठ से जुड़े बीन्स (मॉडल विशेषताएँ) होंगे, फिर भी बीन से पूछने के लिए ईएल का उपयोग करना चाहेंगे।

चीयर्स

+0

JSPs शायद वे नियमित सर्वलेट को संकलित करने के लिए की जरूरत के लिए डीबी से स्थानीय फ़ाइल के लिए निकाले जाने की आवश्यकता होगी। मुझे पूरा यकीन नहीं है कि यह डिज़ाइन कैसा प्रदर्शन करेगा ... इसलिए काफी उत्सुक उत्तरों की उम्मीद है :) – Romain

+2

लोग ऐसा करेंगे क्योंकि एक डीबी में संग्रहीत एक जेएसपी डिस्क में संग्रहीत जेएसपी से अलग है। डीबी के साथ आपके पास बहुत सारी सुविधाएं हैं जिनके पास डिस्क नहीं हैं, जैसे लेनदेन, अनियंत्रित मेटाडेटा, अनुमतियां इत्यादि स्टोर करने की क्षमता। यदि आप इन सभी चीजों को डीबी में संग्रहीत कर रहे हैं लेकिन डिस्क पर जेएसपी संग्रहीत करते हैं तो आप सीएमएस भाग की जटिलता। यदि आप डीबी में जेएसपी स्टोर कर रहे हैं तो आप जेएसपी लोडर की जटिलता बढ़ाते हैं। प्रदर्शन के लिए, जेएसपी की प्रारंभिक लोडिंग और संकलन धीमा हो जाएगा लेकिन एक बार यह संकलित हो जाने पर प्रदर्शन समान होना चाहिए। –

उत्तर

3

JSP लदान और संकलन सर्वलेट कंटेनर में कार्यान्वित किया जाता है। इस सुविधा को संभव बनाने के लिए उपयोग करने के बारे में दो दृष्टिकोण हैं:

  1. सर्वलेट कंटेनर के जेएसपी सर्वलेट को संशोधित करें। यदि आप इसका उपयोग कर रहे हैं, तो जेटी या टॉमकैट जो ओपन-सोर्स हैं, आप आसानी से अपने जेएसपी सर्वलेट को देख सकते हैं और इसे बदल सकते हैं ताकि यह डीबी से जेएसपी पढ़ सके। आप मालिकाना कंटेनर में उपयोग के लिए इनमें से किसी एक को अनुकूलित करने में सक्षम हो सकते हैं। यह समस्या को हल करने का सबसे सीधा तरीका है लेकिन आप संभावित बग के एक खनन क्षेत्र में कदम उठा रहे हैं।
  2. योजनाबद्ध रूप से डेटाबेस में सीएमएस बनाएं, लेकिन एप्लिकेशन चलते समय जेएसपी को चल रहे एप्लिकेशन के फाइल सिस्टम पर कॉपी करें। एप्लिकेशन सर्वर के सामान्य जेएसपी को पता लगाने की सूचना दें कि परिवर्तन हो रहे हैं। आप सभी अनुरोधों को एक फ़िल्टर के साथ लपेट सकते हैं जो अद्यतन जेएसपी के लिए डीबी की जांच करता है, जेएसपी को संशोधन समय पर कॉपी करता है, या किसी निश्चित अंतराल पर उन्हें कॉपी करने के लिए अनुसूचित नौकरी का उपयोग करता है।

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