CDI - مراقبة أحداث الحاوية
-
30-09-2019 - |
سؤال
أحاول مراقبة كل من أحداث بدء التشغيل والإغلاق لتطبيق ويب 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
لا تنتمي إلى StackOverflow