java एक नए सत्र में अनुरोध सत्र सेट करने के साथ 2 सत्र को रोकता है



struts2 httpsession (1)

मेरे स्ट्रट्स एप्लिकेशन में एक उपयोगकर्ता लॉगिन के बाद मुझे मौजूदा सत्र को रद्द करना और एक नया सत्र बनाना होगा। मैं सत्र के साथ अमान्य करता हूँ

getHttpServletRequest().getSession().invalidate();

और मैं एक नए सत्र का निर्माण करता हूं

getHttpServletRequest().getSession(true);

यहां समस्या के बाद उपरोक्त के बाद मैं getSession() का उपयोग करने की कोशिश करता getSession() यह राज्य को अमान्य अपवाद देता है; HttpSession अमान्य है

getSession() एक नक्शा देता है जहां मेरी एक्शन क्लास में मैं setSession(Map session) जिसमें setSession(Map session)

संपादित करें: नीचे अपवाद है

Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: HttpSession is invalid
java.lang.IllegalStateException: HttpSession is invalid

तो, जो समस्या मैं मानता हूं वह स्ट्रट्स getSession() अभी भी उस सत्र का संदर्भ देती है जिसे मैंने अवैध कर दिया है I

कैसे स्ट्रट्स getSession() को नए सत्र के संदर्भ में बनाने के लिए जिसे मैंने बनाया है?


यदि आप सर्वलेट सत्र को रद्द करने के बाद स्ट्रट्स सत्र का उपयोग करना चाहते हैं तो आपको स्ट्रटस सत्र को अपडेट या नवीनीकृत करना चाहिए। उदाहरण के लिए

SessionMap session = (SessionMap) ActionContext.getContext().getSession();

//invalidate
session.invalidate();

//renew servlet session
session.put("renewServletSession", null);
session.remove("renewServletSession");

//populate the struts session
session.entrySet();

अब स्ट्रटस सत्र नए सर्विसलेट सत्र का उपयोग करने के लिए तैयार है और आप स्ट्रटस सत्र को पुनः उपयोग करने के लिए तैयार हैं।





httpsession