2012-05-01 39 views
6

Bất kỳ ai cũng biết cách làm cho chú thích @Schedule hoạt động trên JBoss AS 7?JBoss AS 7.1 - lịch chạy bằng cách sử dụng chú thích @Schedule

Tôi biết rằng trên Glassfish-3.1.2 nó hoạt động out-of-box.

tôi cố gắng này:

@ManagedBean 
@Stateless(name="ImportStatementSchedule") 
public class ImportStatementSchedule implements Serializable{ 
private Logger _log = Logger.getLogger(this.getClass()); 

    @Schedule(minute="*") 
    public void executeImport(){ 
     _log.info("Scheduled task started"); 
    } 

} 

Tôi hy vọng nhận được thông tin đăng nhập mỗi phút, nhưng không có gì;)

Tôi đã kiểm tra những chủ đề diễn đàn, nhưng không giúp:

https://community.jboss.org/message/623574

https://community.jboss.org/message/621893

https://community.jboss.org/message/637567

A có JBoss AS 7.1.1 Final

Có lẽ tôi đã quên cái gì đó, xin vui lòng có thể ai chỉ cho tôi cách phải không?

UPDATE:

Tôi biết rằng JBoss đăng ký EJB tôi để JNDI:

11:07:05,548 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named ImportStatementSchedule in deployment unit deployment "finadv.war" are as follows: 

    java:global/finadv/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:app/finadv/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:module/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:global/finadv/ImportStatementSchedule 
    java:app/finadv/ImportStatementSchedule 
    java:module/ImportStatementSchedule 

UPDATE2

Nó đã được giải quyết như đã đề cập trong ý kiến ​​dịch vụ

+3

Xem chủ đề này, đặc biệt là "giờ" tham số: http://stackoverflow.com/questions/10246606/java-ee-scheduler- không được gọi là –

+1

Sự cố được giải quyết bằng cách đặt tham số giờ.Tuy nhiên, tôi đã thử trước đó với các giá trị chính xác như @Schedule (phút = "18", giờ = "15") nhưng không có gì xảy ra. Cảm ơn. – rkosegi

Trả lời

6

hẹn giờ là dịch vụ EJB. ImportStatementSchedule phải là một hạt đậu @Stateless hoặc @Singleton phiên. Từ Thông số kỹ thuật EJB 3.1, Mục 18.2:

Đối với bộ hẹn giờ được tạo tự động, phương pháp thời gian chờ có thể là một chú thích có chú thích Lịch biểu. Các bộ hẹn giờ có thể được tạo cho các bean phiên không trạng thái, các bean phiên đơn, các bean định hướng và 2.1 bean thực thể. Không thể tạo bộ hẹn giờ cho các bean phiên trạng thái.

Báo cáo nhật ký INFO gây hiểu lầm. JBoss không đăng ký EJB. Nó chỉ sử dụng cùng một lược đồ đặt tên như được xác định bởi chú thích @ManagedBean (Javadoc):

[..] Tên Bean được quản lý phải là duy nhất trong mô-đun Java EE. Đối với mỗi Managed Bean, các thùng chứa Java EE phải có sẵn các mục sau trong JNDI, sử dụng cùng một lược đồ đặt tên được sử dụng cho các thành phần EJB. Trong không gian tên ứng dụng:

java:app/<module-name>/<bean-name>

Trong không gian tên module của module chứa Bean Managed:

java:module/<bean-name>

+0

+1 để tham khảo tốt, nhưng tôi đã thử trước cả chú thích của Stateless hoặc Singleton, bây giờ tôi biết rằng vấn đề là @Nick Wilson được đề cập trong tham số giờ. – rkosegi

+0

thx, @rkosegi. điều đó có nghĩa là bạn có thể sử dụng '@ Schedule' mà không sử dụng' @ Stateless' hoặc '@ Singleton'? – kraftan

+0

Không, nó có nghĩa là tôi không thể làm cho nó hoạt động cho đến khi tôi đặt tham số giờ thành "*". Hiện tại tôi đang sử dụng chú thích không quốc tịch và nó hoạt động. – rkosegi

4

tôi có thể thêm, rằng nếu bạn viết

@Schedule(minute="*")

nó sẽ chỉ bắn vào lúc nửa đêm. Vì thông số giờ là mặc định: .

Thử: @Schedule(minute = "/1", hour = "") hoặc nội dung tương tự. Trong trường hợp của tôi nó đã giúp.

0

Bạn phải chỉ định giờ, hãy thử:

@Schedule(hour="\*", minute="\*") 
Các vấn đề liên quan