2010-08-22 30 views
6

Tôi đang cố quan sát cả sự kiện khởi động và tắt máy cho ứng dụng web CDI. Tôi có một hạt ApplicationScoped lắng nghe những sự kiện đó:CDI - Sự kiện quan sát vùng chứa

@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); 
    } 

Tôi không thấy gì trong nhật ký.

Tôi đang thiếu gì?

+0

Tôi có một tệp beans.xml trống trong lưu trữ này. Tôi không tin rằng loại đậu này đã từng được chế tạo vì tôi không thấy bất kỳ bản ghi nhật ký nào được tạo ra bởi nó. –

+0

là trình ghi nhật ký của bạn được định cấu hình đúng chưa? Hãy thử System.out – Bozho

+0

Tôi sẽ thử rằng :) –

Trả lời

14

Nhờ Pete Muir, giải pháp là triển khai giao diện Tiện ích mở rộng. Một khi tôi đã làm điều đó, cùng với việc tạo ra một tập tin đặc biệt, nó hoạt động hoàn hảo. Điều cần ghi nhớ là, nếu bạn muốn quan sát (hoặc hành động) các sự kiện chứa, bạn phải triển khai giao diện mở rộng vì nó là một sự kiện đặc biệt.

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

Walter

+0

Cảm ơn bạn đã đăng bài này. +1 tất cả xung quanh. –

+2

Bạn đề cập đến việc tạo một tệp đặc biệt. Tệp gì vậy? –

7

Các "đặc biệt tập tin" được đề cập bởi Walter White là:

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

Đó tập tin nên chứa tên đầy đủ của lớp mở rộng của bạn. tức là:

org.mydomain.extension.MyExtension 
Các vấn đề liên quan