2012-05-01 48 views
6

任何人都知道如何使@Schedule註釋在JBoss AS 7上工作?JBoss AS 7.1 - 使用@Schedule註釋運行計劃

我知道在Glassfish-3.1.2上它可以開箱即用。

我試試這個:

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

} 

我希望收到的每分鐘日誌消息,但沒有;)

我檢查了這些論壇帖子,但沒有什麼幫助:

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

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

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

一個有JBoss AS中7.1.1決賽

也許我忘了什麼事,請任何人都可以點我到正確的方式?

UPDATE:

我知道JBoss的註冊我的EJB到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

在評論

+3

看到這個主題,特別是 「小時」 參數: http://stackoverflow.com/questions/10246606/java-ee-scheduler-是不是所謂的 –

+1

通過設置小時參數解決了問題。但是,我以前使用@Schedule(分鐘=「18」,小時=「15」)等精確值嘗試過,但沒有任何反應。謝謝。 – rkosegi

回答

6

定時服務提到已解決是EJB服務。 ImportStatementSchedule應該是@Stateless@Singleton會話bean。根據EJB 3.1規範,第18.2節:

對於自動創建的計時器,超時方法可能是一個使用計劃註釋進行註釋的方法。定時器可以爲無狀態會話bean,單例會話bean,消息驅動的bean和2.1實體bean創建。定時器不能爲有狀態會話bean創建。

INFO日誌聲明是誤導性的。 JBoss不註冊EJB。它只使用與@ManagedBean註釋(Javadoc)中定義的相同的命名機制:

受管Bean名稱在Java EE模塊中必須是唯一的。對於每個指定的受管Bean,Java EE容器必須使用與EJB組件相同的命名方案在JNDI中提供以下條目。 在應用命名空間:

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

在包含Managed Bean的模塊的模塊命名空間:

java:module/<bean-name>

+0

+1以供參考,但我在無狀態或Singleton註釋之前嘗試過,現在我知道該問題與@Nick Wilson在小時參數中提到的一樣。 – rkosegi

+0

thx,@rkosegi。這是否意味着您可以使用'@ Schedule'而不使用'@ Stateless'或'@ Singleton'? – kraftan

+0

不,這意味着我無法使其工作,直到我將小時參數設置爲「*」。目前我正在使用無狀態註釋,它的工作原理。 – rkosegi

4

我可以補充一點,如果你寫

@Schedule(minute="*")

它只會在午夜時分開火。因爲小時參數是默認值:。

嘗試: @Schedule(minute = "/1", hour = "") 或類似的東西。 在我的情況下,它的幫助。

0

您必須指定小時,嘗試:

​​3210