سؤال

ولدي SessionVar مثل هذا في الرفع:

object MyObject {
   object myVar extends SessionVar[Box[MyObject]](Empty)
}

وبعد ذلك أنا وضعت القيمة مرة واحدة myVar:

 MyObject.myVar(Full(value))

ومشكلتي هي أنه بعد بعض الوقت (1-5 دقائق) myVar سوف تفقد قيمتها، وهذا يعني أنه سوف يكون قيمة فارغة مرة أخرى. هذا ليس الخمول المقرر بما أنني النقر على صفحات باستمرار. قانون بلدي لم يحدد قيمة لإفراغ. خلال هذه 1-5 دقائق على myVar ستعمل بشكل صحيح. السجلات لا تحتوي على الرسائل ذات الصلة.

وحاولت إضافة طريقة اغلاق لmyVar، ولكن لم يتم الحصول على صفته.

 override protected def onShutdown(session: CleanUpParam): Unit = {
   Log.error("shutdown executed")
 }

وأنا تشغيل مصعد في رصيف طريق القيادة mvn jetty:run. أنا أستخدم 1.1 لقطة من ليفت. أنا لا خلق صراحة أي نوع من الكعكة أو الدورة.

وأي أفكار ما يحدث؟ يمكن أن يكون انتهاء تلك الدورة أو يبطل بطريقة أو بأخرى، ولكن لماذا وعلى يد من؟

وأنا حتى حاول تعطيل liftGC مع (LiftRules.enableLiftGC = false) ولكن هذا لا يؤثر.

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

المحلول

وأتصور أن المسألة هي أنه في حين النقر حولها، وتقوم بإنشاء طريق الخطأ جلسة عمل جديدة. وهذا يفسر لماذا كنت لا تحصل على الحدث جلسة الاغلاق: الدورة القديمة لا يزال موجودا، ولكن كنت لم يعد استخدامه. أقترح عليك أن تطبع معرف جلسة مع كل طلب ومعرفة ما اذا كان يتغير.

هل يمكن أن تفقد الدورة لأن ملف تعريف ارتباط جلسة وتنتهي، أو لأنك لا URL ترميز بعض الروابط (انظر HttpServletResponse.encodeURL)، أو لأنك تبحر خارج مسار سياق التطبيق الخاص بك.

نصائح أخرى

ما بك جلسة انتهاء الوقت المحدد في LiftRules؟

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