سؤال

أنا جديد على JEE وهذا ما يحيرني.وفق HttpSession.html#setMaxInactiveInterval(الفاصل الزمني) توثيق

ان interval قيمة ال zero أو أقل يدل على أن يجب ألا تنتهي مهلة الجلسة أبدًا.

ولكن وفقًا لكتابي النصي (الذي عمره بضع سنوات بالفعل - لذلك أتوقع ألا يكون صحيحًا دائمًا) فإن استخدام الصفر كوسيطة يجب أن يؤدي إلى انتهاء مهلة الجلسة على الفور.

هذا الرمز

public class Test extends HttpServlet {

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");

        PrintWriter out = response.getWriter();

        HttpSession session = request.getSession();
        session.setAttribute("foo", 42);
        session.setMaxInactiveInterval(0);

        out.println(session.getAttribute("foo"));//problem here

    }
}

يبدو أن المستخدم في Glassfish 4.0 يؤكد النظرية من الكتاب المدرسي بدلاً من الوثائق الرسمية الأحدث لأنه يعود حالة HTTP 500 - خطأ داخلي في الخادم مع رسالة خطأ

java.lang.IllegalStateException: getAttribute: Session already invalidated

ما الذي يجري هنا؟هل هذا الخطأ في Glassfish 4.0 أم أن الوثائق خاطئة؟أو ربما هناك خيار ثالث؟


ملاحظة.يعمل هذا الرمز كما ينبغي مع القيم السالبة (لم يتم إبطال الجلسة) وأنا أستخدمه -1 بدلاً من 0 في الكود الخاص بي.أنا مهتم فقط بما هو الخطأ 0.

هل كانت مفيدة؟

المحلول

ال مواصفات السيرفرت ينص الفصل الخاص بمهلات الجلسة

بحكم التعريف ، إذا تم تعيين فترة الخروج من الجلسة إلى -1 ، فلن تنتهي الجلسة أبدًا.

لذا يبدو أن شركة GlasshFish قد غطت ذلك.لا يمكنني العثور على أي مرجع في المواصفات ينص على أن الشيء نفسه يجب أن يكون صحيحًا بالنسبة لقيمة 0 مع setMaxInactiveInterval().ومع ذلك فإنه يقول

ال session-config يحدد معلمات الجلسة لتطبيق الويب هذا.العنصر الفرعي session-timeout يحدد الفاصل الزمني لوقت الجلسة الافتراضي لجميع الجلسات التي تم إنشاؤها في تطبيق الويب هذا.يجب التعبير عن الوقت المحدد في عدد كامل من الدقائق. إذا كانت المهلة 0 أو أقل, ، تضمن الحاوية أن السلوك الافتراضي للجلسات لا يتم تشغيله أبدًا.إذا لم يتم تحديد هذا العنصر ، فيجب أن تحدد الحاوية فترة الوقت الافتراضي.

نصائح أخرى

هذا هو بالفعل حان الوقت وإبطال

giveacodicetagpre.

لذلك هذه رسالة الخطأ الصحيحة.(يرجى الرجوع إلى رأس الكتاب الأول للحصول على مزيد من المرجع.)

تحاول الوصول إلى قيمة الكائنات غير موجودة.لقد دمرت بالفعل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top