2012-04-20 47 views
11

Tôi đang chạy ứng dụng của mình bên trong Glassfish. Tôi đã cố gắng tạo một công việc, sẽ được thực hiện sau mỗi 5 phút như sau:Trình lập lịch biểu Java EE không được gọi là

@Startup 
@Singleton 
@LocalBean 
public class TempFolderCleaner { 
    private final static Logger LOGGER = LoggerFactory.getLogger(TempFolderCleaner.class); 

    @EJB 
    private ReportStatusDao reporStatusDao; 

    @Schedule(minute = "*/5") 
    public void removeOldReports() { 
     LOGGER.debug("start removeOldReports()"); 
    } 
} 

Tuy nhiên, nó không bao giờ được gọi. Tôi đã cố gắng để xem một tin nhắn từ logger và để thiết lập một điểm gỡ lỗi nhưng nó sẽ không được gọi. Tôi đã sử dụng tài liệu này cho cú pháp: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

Tôi cũng đã cố gắng chỉ định số phút chính xác. Thật không may mà không thành công.

+0

Lưu ý rằng bạn không cần '@ LocalBean' chú thích ở đây. –

Trả lời

18

Tôi nghĩ rằng "giờ" mặc định là 0 (nửa đêm), vì vậy bạn có thể cần phải xác định nó như:

@Schedule(minute = "*/5", hour="*") 
+0

bạn hoàn toàn đúng. Cảm ơn rất nhiều! Thứ hai, giờ và phút có giá trị mặc định "0" thay vì "*" như các thuộc tính khác. – Daniel

+0

Nó giải quyết cho tôi, nhưng điều này là lạ kể từ khi doc tôi hiểu rằng phút = "*/5" nên rõ ràng thiết lập giờ để "*". Nhưng này .... – Kemoda

Các vấn đề liên quan