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
如评论中所述,它已得到解决
定时服务是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>
| 归档时间: |
|
| 查看次数: |
8632 次 |
| 最近记录: |