दिलचस्प पोस्ट
Supertype-subtype डेटाबेस डिजाइन दृश्य स्टूडियो में मिलान ब्रेस पर जाएं? VBA: एक नया ऑब्जेक्ट घोषित करने के दो तरीकों में अंतर? (समझने की कोशिश कर रहा हूं कि मेरा समाधान क्यों काम करता है) Json_decode का उपयोग करके PHP में JSON वस्तु को पार्स करना वास्तव में जावास्क्रिप्ट में 'निष्पादन संदर्भ' क्या है? अंगुलियज – एनजी-क्लॉक / एनजी-शो तत्व ब्लिंक जावा सीरियलाइजेशन का सबसे अच्छा विकल्प कौन सा है? क्या जावा को ब्लॉकों को कसकर संभव के रूप में स्कॉच करने का प्रयास करना चाहिए? अकाका के लिए अच्छा उपयोग केस सी ++ में पॉइंटर्स के लिए बहुआयामी arrays को परिवर्तित करना ग्राहक इकाई के लिए विशेषताएं जोड़ना एक सरणी में सर्वोच्च घटना के साथ तत्व प्राप्त करें आमंत्रण कॉल में अनाम विधि चेकबॉक्स की डिफ़ॉल्ट छवियों को कैसे बदला जाए MySQL: किसी तालिका से पंक्तियों का चयन करें जो दूसरे में नहीं हैं

क्यों JSF सर्वर पर यूआई घटकों की स्थिति बचाता है?

  1. जब तक कि समय-समय पर जेएसएफ सर्वर पक्षों पर यूआई घटकों की स्थिति को बचाता है और जब यूआई घटक की राज्य की जानकारी सर्वर मेमरी से हटाई जाती है तो क्या? लॉग-इन उपयोगकर्ता के रूप में ऐप्स पर नेविगेट किए जाने वाले पृष्ठों पर, क्या घटकों की स्थिति सर्वर पर जमा होती रहती है?

  2. मुझे समझ में नहीं आ रहा है कि सर्वर पर UI घटकों को बनाए रखने का क्या लाभ है! सीधे प्रबंधित बीन्स को मान्य / रूपांतरित डेटा से सीधे नहीं गुजर रहा है? क्या मैं या इसे से बचने की कोशिश करनी चाहिए?

  3. क्या सर्वर पक्ष पर बहुत अधिक स्मृति का उपभोग नहीं होता है, यदि हजारों समवर्ती उपयोगकर्ता सत्र हैं? मेरे पास एक ऐसा एप्लिकेशन है जहां उपयोगकर्ता कुछ विषयों पर ब्लॉग पोस्ट कर सकते हैं। इस ब्लॉग आकार में काफी बड़े हैं जब पोस्ट वापस या ब्लॉग देखने के लिए अनुरोध किया जाएगा , क्या इस बड़े पेज डेटा को घटकों की स्थिति के हिस्से के रूप में सहेजा जाएगा? यह बहुत मेमोरी खाएगा क्या यह चिंता का विषय नहीं है?


अपडेट 1:

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

अपडेट 2 (24-02-2013):

एक अच्छी खबर है कि मोजर्रा 2.1.19 स्टेटवाल मोड के साथ बाहर है !

यहाँ देखें:

http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255

http://java.net/jira/browse/JAVASERVERFACES-2731

http://balusc.blogspot.de/2013/02/stateless-jsf.html

Solutions Collecting From Web of "क्यों JSF सर्वर पर यूआई घटकों की स्थिति बचाता है?"

JSF को सर्वर साइड पर यूआई घटकों की स्थिति को बचाने की आवश्यकता क्यों है?

चूंकि HTTP स्टेटलेस है और जेएसएफ राज्यपूर्ण है। JSF घटक वृक्ष गतिशील (प्रोग्रामेटिक) परिवर्तनों के अधीन है JSF को केवल सटीक स्थिति जानना आवश्यक है क्योंकि यह तब था जब प्रपत्र अंत उपयोगकर्ता को प्रदर्शित किया गया था, ताकि वह मूल JSF घटक वृक्ष द्वारा प्रदान की गई जानकारी के आधार पर पूरे JSF जीवनचक्र को सफलतापूर्वक संसाधित कर सके, जब फ़ॉर्म को वापस जमा कर दिया गया हो सर्वर। घटक ट्री अनुरोध पैरामीटर नाम, आवश्यक कन्वर्टर्स / वैलिएटर्स, बाउंड मैनेजिंग बीन प्रॉपर्टी और एक्शन विधियों के बारे में जानकारी प्रदान करता है।


जब तक समय में जेएसएफ सर्वर साइड पर यूआई घटकों की स्थिति को बचाता है और तब जब यूआई घटक की राज्य जानकारी सर्वर मेमोरी से हटाई जाती है, तब तक?

उन दो प्रश्नों को उसी के लिए उबाल लगते हैं वैसे भी, यह कार्यान्वयन विशिष्ट है और यह भी निर्भर करता है कि क्या राज्य सर्वर या क्लाइंट पर सहेजा जाता है। थोड़ी अच्छी कार्यान्वयन इसे समाप्त हो जाएगा जब यह समाप्त हो जाएगा या कतार पूर्ण हो जाने पर। उदाहरण के लिए मोजररा में 15 तार्किक विचारों की एक डिफ़ॉल्ट सीमा होती है, जब राज्य बचत सत्र पर सेट है। यह web.xml में निम्नलिखित प्रसंग परम के साथ कॉन्फ़िगर करने योग्य है:

 <context-param> <param-name>com.sun.faces.numberOfLogicalViews</param-name> <param-value>15</param-value> </context-param> 

अन्य मोजर्रा-विशिष्ट पैराम्हों के लिए मोजररा एफएक्यू भी देखें और इस संबंध में संबंधित उत्तर com.sun.faces.numberOfViewsInSession vs com.sun.faces.numberOfLogicalViews देखें


लॉग-इन उपयोगकर्ता के रूप में ऐप्स पर नेविगेट किए जाने वाले पृष्ठ पर, क्या घटकों की स्थिति सर्वर पर जमा होती रहती है?

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

या, जब राज्य की बचत क्लाइंट के लिए सेट है, तब जेएसएफ सत्र में कुछ भी स्टोर नहीं करेगा। आप ऐसा कर सकते हैं कि वेब। web.xml में निम्नलिखित प्रसंग परम:

 <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> 

यह तब एक एन्क्रिप्टेड स्ट्रिंग को छिपे हुए इनपुट फ़ील्ड में नाम के साथ javax.faces.ViewState के साथ क्रमबद्ध किया जाएगा।


मैं समझ नहीं पा रहा हूं कि सर्वर के पक्ष में यूआई घटक की स्थिति को रखने का क्या लाभ है। सीधे प्रबंधित बीन्स को मान्य / रूपांतरित डेटा से सीधे नहीं गुजर रहा है? क्या मैं इसे से बचने की कोशिश कर सकता हूं?

जेएसएफ की अखंडता और मजबूती सुनिश्चित करने के लिए यह पर्याप्त नहीं है। JSF नियंत्रण के एकल प्रविष्टि बिंदु के साथ एक गतिशील रूपरेखा है। किसी राज्य प्रबंधन के बिना, एक विशिष्ट तरीके से एक हद-से-छुटकारा / एचटीटीपी अनुरोधों को सुलझाने में सक्षम होगा (उदाहरण के disabled , disabled , readonly और rendered गुणों को जोड़कर), ताकि जेएसएफ़ अलग-अलग संभवतः खतरनाक- बातें कर सकें यह सीएसआरएफ के हमलों और फ़िशिंग की संभावना भी होगी।


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

मेमोरी विशेष रूप से सस्ते है बस क्षुधावर्धक को पर्याप्त स्मृति दें या यदि नेटवर्क बैंडविड्थ आपके लिए सस्ता है, तो बस ग्राहक की तरफ से राज्य की बचत करें। सबसे अच्छा मैच खोजने के लिए, बस स्ट्रेसस्टेस्ट और समवर्ती उपयोगकर्ताओं की अधिकतम संख्या के साथ अपने वेबपैड को प्रोफाइल करें और फिर अधिकतम मापन मेमोरी के 125% ~ 150% का ऐपर्सर दें।

ध्यान दें कि जेएसएफ 2.0 ने राज्य प्रबंधन में बहुत सुधार किया है। आंशिक स्थिति को बचाने संभव है (जैसे केवल <h:form> पूरे सामान के बजाय <html> सभी तरह से अंत तक सहेजा जाएगा)। उदाहरण के लिए मोजररा ऐसा करता है 10 इनपुट फ़ील्ड (प्रत्येक लेबल और संदेश वाला) और 2 बटन के साथ एक औसत रूप 1KB से अधिक नहीं ले जाएगा सत्र में 15 विचारों के साथ, यह प्रति सत्र 15KB से अधिक नहीं होना चाहिए ~ 1000 समवर्ती उपयोगकर्ता सत्रों के साथ, यह 15 एमबी से अधिक नहीं होना चाहिए

आपकी चिंता को सत्र या आवेदन क्षेत्र में वास्तविक वस्तुओं (प्रबंधित बीन्स और / या डीबी संस्थाओं) पर अधिक ध्यान केंद्रित किया जाना चाहिए। मैंने बहुत सारे कोड और परियोजनाएं देखी हैं जो बिना किसी बेजोड़ तरीके से पूरे डेटाबेस तालिका को एक सत्र के स्वाद में जावा की मेमोरी में डुप्लिकेट करता है, जहां एसक्यूएल के बजाय जावा का इस्तेमाल किया जाता है, ताकि फिल्टर / समूह / अभिलेखों को व्यवस्थित किया जा सके। ~ 1000 रिकॉर्ड के साथ, जो आसानी से प्रति उपयोगकर्ता सत्र 10MB से अधिक हो जाएगा।