JBoss AS 7.1 - 使用@Schedule注释的运行计划

时间:2012-05-01 09:02:02

标签: java-ee jboss ejb jboss7.x scheduler

任何人都知道如何在JBoss AS 7上进行@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

A有JBoss AS 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

UPDATE2

如评论中提到的那样已经解决了

3 个答案:

答案 0 :(得分:6)

Timer服务是EJB服务。 ImportStatementSchedule应该是@Stateless@Singleton会话bean。从EJB 3.1规范,第18.2节:

  

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

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

  

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

     

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

     

在包含Managed Bean的模块的模块名称空间中:

     

java:module/<bean-name>

答案 1 :(得分:4)

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

@Schedule(minute="*")

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

尝试: @Schedule(minute = "/1", hour = "") 或类似的东西。 就我而言,它有所帮助。

答案 2 :(得分:0)

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

Project_Description_Preview