Jakarta ee JBoss AS 7.1-使用@schedule注释运行计划

Jakarta ee JBoss AS 7.1-使用@schedule注释运行计划,jakarta-ee,jboss,ejb,jboss7.x,scheduler,Jakarta Ee,Jboss,Ejb,Jboss7.x,Scheduler,有人知道如何在JBossAS7上使用@Schedule注释吗 我知道在Glassfish-3.1.2上它是开箱即用的 我试试这个: @ManagedBean @Stateless(name="ImportStatementSchedule") public class ImportStatementSchedule implements Serializable{ private Logger _log = Logger.getLogger(this.getClass()); @Sch

有人知道如何在JBossAS7上使用@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");
    }

}
我希望每分钟都能收到日志消息,但什么也没有;)

我检查了这些论坛线程,但没有任何帮助:

A将JBoss作为7.1.1-Final

也许我忘了什么,有人能给我指一下正确的方向吗

更新:

我知道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
更新2


正如注释中所提到的,计时器服务是EJB服务
ImportStatementSchedule
应该是一个
@无状态的
@Singleton
会话bean。来自EJB3.1规范第18.2节:

对于自动创建的计时器,timeout方法可以是使用Schedule注释进行注释的方法。可以为无状态会话bean、单例会话bean、mes-sage驱动bean和2.1实体bean创建计时器。无法为有状态会话bean创建计时器

INFO
log语句具有误导性。JBoss不注册EJB。它只使用与
@ManagedBean
注释(Javadoc)定义的相同的命名方案:

[…]托管Bean名称在JavaEE模块中必须是唯一的。对于每个命名的托管Bean,JavaEE容器必须在JNDI中提供以下条目,使用与EJB组件相同的命名方案。 在应用程序命名空间中:

java:app/

在包含托管Bean的模块的模块命名空间中:

java:module/


我可以补充一点,如果你写信


@附表(分钟=“*”)

它只会在午夜开火。因为小时参数是默认值:0

尝试:

@时间表(分钟=”/1“,小时=”)
或者类似的事情。
在我的情况下,它有帮助。

您必须指定小时数,请尝试:

@Schedule(hour="\*", minute="\*")

请参阅此线程,特别是“hour”参数:+1,以获得良好的参考,但我在无状态或单例注释之前都尝试过,现在我知道问题正如@Nick Wilson在hour parameter.thx、@rkosegi中提到的那样。这是否意味着您可以使用
@Schedule
,而不使用
@Stateless
@Singleton
?不,这意味着在将小时参数设置为“*”之前,我无法使其工作。目前我正在使用无状态注释,它可以正常工作。