Jakarta ee JBoss AS 7.1-使用@schedule注释运行计划
有人知道如何在JBossAS7上使用@Schedule注释吗 我知道在Glassfish-3.1.2上它是开箱即用的 我试试这个: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
@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
?不,这意味着在将小时参数设置为“*”之前,我无法使其工作。目前我正在使用无状态注释,它可以正常工作。