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

rko*_*egi 6 jboss ejb scheduler java-ee jboss7.x

有谁知道如何在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");
    }

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

有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
Run Code Online (Sandbox Code Playgroud)

UPDATE2

如评论中所述,它已得到解决

kra*_*tan 6

定时服务是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>