سؤال

في سجلات Tomcat الخاصة بي (كاتالينا) أتلقى الخطأ التالي الذي يمنع التطبيق من بدء التشغيل:

SEVERE: Error listenerStart
24-Mar-2009 13:23:10 org.apache.catalina.core.StandardContext start
SEVERE: Context [/exampleA] startup failed due to previous errors

لا أعرف لماذا أحصل على هذا.في ملف web.xml الخاص بي، لدي ما يلي

<listener>
    <listener-class>
        uk.co.a.listener.SessionListener
    </listener-class>
</listener>

<listener>
    <listener-class>
        uk.co.a.listener.SessionAttributeListener
    </listener-class>
</listener>

عندما أقوم بالتعليق على المستمعين، يبدأ الأمر بشكل جيد.رمز المستمعين أدناه:

public class SessionAttributeListener implements HttpSessionAttributeListener {
    static Log log = LogFactory.getLog(SessionAttributeListener.class.getName());

    public void attributeAdded(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeAdded to THE SESSION:" + hsbe.getName());
    }

    public void attributeRemoved(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeRemoved from THE SESSION:" + hsbe.getName());
    }

    public void attributeReplaced(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeReplaced in THE SESSION:" + hsbe.getName());
    }
}

و

public class SessionListener implements HttpSessionListener {

    static Log log = LogFactory.getLog(SessionListener.class.getName());

    private static int activeSessions = 0;
    public void sessionCreated(HttpSessionEvent evt)
    {
        activeSessions++;
        log.debug("No. of active sessions on:"+
                new java.util.Date()+" : "+activeSessions);
    }
    public void sessionDestroyed (HttpSessionEvent evt)
    {
        activeSessions--;
    }
} 

لماذا لا يبدأ هذا؟أو أين يمكنني البحث عن مزيد من المعلومات؟

تحديث

يبدو أن هناك مشكلة في SessionAttributeListener عند بدء التشغيل.لم يبدأ تشغيل SessionListener لأنه تم الإعلان عن <listener> بعد <servlet>

تحديث

حدثت مشكلة في ملف JAR المستخدم.لم يتم تضمين فئة SessionAttributeListener.عندما تم تضمينه بدأ التطبيق.

تحديث

يبدو أن AttributeListener لا يعمل.عند استخدامه يفشل الرمز.هل هناك طريقة بسيطة للتحقق مما إذا كان المستمع قيد التشغيل؟

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

المحلول

إعادة قراءة التحديث الخاص بك "يبدو أن AttributeListener لا يعمل.عند استخدامه يفشل الرمز.هل هناك طريقة بسيطة للتحقق مما إذا كان المستمع قيد التشغيل؟" هل حاولت إضافة مُهيئ ثابت؟شيء مثل

static {
log.debug("static initialiser called");
}

بهذه الطريقة، في المرة الأولى التي تتم فيها الإشارة إلى الفصل، يجب أن تحصل على سجل سجل.

نصائح أخرى

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

الأمر كله يتعلق بالاستثناء الأساسي الذي يسبب الخطأ "SEVERE:" المخيف:لم يتم تسجيل رسالة خطأ المستمع ستارت في أي مكان، وكيفية تكوين التسجيل لإنتاج الاستثناء.

من هنا يوجد وصف واضح جدًا لمشكلة التسجيل والحل.

في حالتي، اخترت إصدارًا أكثر اختصارًا، مضيفًا

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].handlers = java.util.logging.ConsoleHandler

إلى Tomcat conf/logging.properties، واستبدال /web-app بمسار سياق تطبيق الويب المناسب.

وبطريقة سحرية ظهر الاستثناء المخفي وأخبرني أن وقت تشغيل Java 6 لا يريد معرفة التعليمات البرمجية التي تم تجميعها بواسطة Java 7.محرجة، ولكن يمكن إصلاحها بسهولة.

هذا ينطبق على Tomcat 7.قد تختلف المسافة المقطوعة الخاصة بك.

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

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