2015-09-25 12 views
6

क्या कई बड़ी फ़ाइलें अपलोड होने पर सत्र समय समाप्ति हो सकती है? कल्पना कीजिए कि मैं एक 5 जीबीटीई बड़ी फाइल अपलोड करता हूं और एक छोटा सत्र टाइमआउट सेट होता है। फ़ाइल स्ट्रीमिंग के दौरान सत्र समय समाप्ति हो सकती है?प्राइमफ़ेस फ़ाइल अपलोड और सत्र टाइमआउट

उत्तर

8

हाँ, यह कर सकता है। servlet specification कहीं भी प्रतिबंधित नहीं है कि एक सक्रिय अनुरोध के दौरान एक सत्र नष्ट किया जा सकता है। इस प्रकार जब कोई अपलोड बीन पर आता है तो आप ViewExpiredException को जोखिम देंगे।

यह आपकी चिंता का विषय है, तो आप कई विकल्प दिया है:

  1. अपलोड फ़ॉर्म एसिंक्रोनस रूप से अंतराल पर सर्वर से मतदान सत्र जीवित रखने के लिए करते हैं। सेकंड में वर्तमान टाइमआउट प्राप्त करने के लिए आप ईएल में #{session.maxInactiveInterval} का उपयोग कर सकते हैं।

    <p:fileUpload ... /> 
    <p:poll interval="#{session.maxInactiveInterval - 10}" async="true" /> 
    

    10 सेकंड का अंतर सिर्फ इतना है कि यह एक कुछ सेकंड के बहुत देर हो चुकी आता है क्योंकि स्वयं पृष्ठ भी सभी HTML लोड करने में कुछ समय लग सकता है और चुनाव प्रारंभ करने को रोकने के लिए है। यदि अपलोड की शुरुआत पर मतदान को सशर्त रूप से शुरू/प्रस्तुत करना आवश्यक हो तो आप कर सकते हैं।


  2. "onStart" अपलोड की घटना एक निश्चित सीमा सत्र टाइमआउट (घंटे?) बढ़ाने के लिए और "oncomplete" अपलोड की स्थिति उसे वापस जाने दें।

    <p:fileUpload ... onstart="increaseTimeout()" oncomplete="resetTimeout()" /> 
    <p:remoteCommand name="increaseTimeout" listener="#{bean.increaseTimeout}" /> 
    <p:remoteCommand name="resetTimeout" listener="#{bean.resetTimeout}" /> 
    

    आप की फलियों के उपयोग ExternalContext#setSessionMaxInactiveInterval() में सेकंड में वांछित सत्र टाइमआउट सेट करने के लिए कर सकते हैं।


  3. एक stateless JSF फार्म का उपयोग करें। एचटीटीपी सत्र कैसे व्यवहार करता है इस पर ध्यान दिए बिना, दृश्य कभी समाप्त नहीं होगा।

    <f:view transient="true"> 
        ... 
    </f:view> 
    

    नोट: इस तरह के दृश्य से बंधे किसी भी दृश्य स्कैन किए गए बीन्स अनुरोध किए गए अनुरोधों की तरह व्यवहार करेंगे। भ्रम से बचने के लिए, यदि आवश्यक हो तो एनोटेशन को प्रतिस्थापित करें।

+0

बहुत बहुत धन्यवाद। मैं विकल्प 2 का उपयोग करूंगा क्योंकि अपलोड होने पर 'p: fileUpload' मेरे मामले में और दिखाई नहीं दे रहा है। यह एक संवाद के अंदर है जो बंद हो जाएगा और अपलोड जावास्क्रिप्ट कॉल के माध्यम से शुरू किया जाएगा। – opfau

+0

आपका स्वागत है। स्टेटलेस जेएसएफ फॉर्म के उल्लेख के लिए – BalusC

+1

+1! : डी अब तक नहीं जानता था। जेएसएफ रिलीज में यह उपलब्ध होगा? – Fritz

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