سؤال

أحاول مراقبة كل من أحداث بدء التشغيل والإغلاق لتطبيق ويب CDI. لدي حبة ApplicationsCoped التي تستمع لتلك الأحداث:

@ApplicationScoped
public class PrettyfacesStartupObserver
{
    private static final Log LOGGER = LogFactory.getLog(PrettyfacesStartupObserver.class);

    public PrettyfacesStartupObserver()
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\nconstructor");
    }

    public void onStartup(@Observes
    AfterBeanDiscovery afterBeanDiscovery
                                             )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\nafter bean discover");
    }

    public void onStartup(@Observes
    AfterDeploymentValidation afterDeploymentValidation
                                             )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nafter deployment validation");
    }

    public void onShutdown(@Observes
    BeforeShutdown beforeShutdown
                                                )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nbefore shutdown:" + beforeShutdown);
    }

لا أرى أي شيء في السجلات.

ماذا ينقصني؟

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

المحلول

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

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

https://docs.jboss.org/weld/reference/latest/en-us/html/extend.html#d0e4984

والتر

نصائح أخرى

"الملف الخاص" الذي ذكره والتر وايت هو:

META-INF/services/javax.enterprise.inject.spi.Extension

يجب أن يحتوي هذا الملف على الاسم المؤهل بالكامل لفئة التمديد الخاصة بك. بمعنى آخر:

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