fda*_*dam 5 java jboss ejb timer wildfly
我做错了什么吗?
import java.util.Date;
import java.util.Timer;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.TimerService;
@Singleton
@LocalBean
@Startup
public class CIScheduler {
@Resource
private TimerService timerService;
@PostConstruct
public void init() {
timerService.createTimer(1000, 5000, "myTimerInterval");
}
@Timeout
public void execute(Timer timer) {
System.out.println("Current Time : " + new Date());
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈:JDK 8、Wildfly 10
错误日志:
09:31:31,781 警告 [org.jboss.as.ejb3](EJB 默认值 - 9)WFLYEJB0161:无法恢复计时器“config-api.config-api.CIScheduler”(id=f571b03a-efa 9-467d-a9de- b17d88bf54c7)从其持久状态09:31:31,783错误[org.jboss.as.ejb3](EJB默认 - 9)WFLYEJB0022:重试计时器超时期间出错:[id = 35f55f82-a982-43d8-bece-42cfc89debe8 timedObj ectId=config-api.config-api.CIScheduler 自动定时器?:假持久?:真timerService=org.jboss.as.ejb3.timerservice.TimerServiceImpl@1eef0fd init ialExpiration=Wed Jun 15 09:20:46 BRT 2016 IntervalDuration (以毫秒为单位)= 5000 n extExpiration = Wed Jun 15 09:31:36 BRT 2016timerState = RETRY_TIMEOUT info = myTimer Interval]:javax.ejb.EJBException:java.lang.IllegalArgumentException:ja va.lang.ClassCastException@1da01b2
示例提取自:https ://examples.javacodegeeks.com/enterprise-java/ejb3/timer/ejb-timer-service-example/
更新:我清理了数据和 tmp 文件夹,错误日志更改为:
09:49:42,178 INFO [org.jboss.as.ejb3](EJB 默认值 - 2)WFLYEJB0021:计时器:[id =26b74afb-625d-4007-a786-1c0caa92a70b timedObjectId=configuracao-api.config-api.CIScheduler 自动定时器?:假持久?:真timerService = org.jboss.as.e jb3.timerservice.TimerServiceImpl@1b701e2initialExpiration =周三6月15日09:49:37 BRT 2016间隔持续时间(以毫秒为单位)= 5000 nextExpiration =周三6月15日09 :49:47 BRT 2016timerState=IN_TIMEOUT info=myTimerInterval] 将重试 09:49:42,179 INFO [org.jboss.as.ejb3](EJB 默认值 - 2)WFLYEJB0023:重试计时器超时:[id=26b74afb- 625d-4007-a786-1c0caa92a70b timedObjectId=config-api.config-api.CIScheduler 自动计时器?:假持久?:真timerS ervice=org.jboss.as.ejb3.timerservice.TimerServiceImpl@1b701e2 initialExpiration = 2009 年 6 月 15 日星期三:49:37 BRT 2016 IntervalDuration(以毫秒为单位)=5000 nextExpiration =Wed Jun 15 09:49:47 BRT 2016 timeState=IN_TIMEOUT info=myTimerInterval] 09:49:42,181 错误 [org.jboss.as.ejb3] (EJB默认 - 2) WFLYEJB0022: 重试计时器超时期间出错: [id=26b74afb-625d-4007-a786-1c0caa92a70b timedObj ectId=config-api.config-api.CIScheduler auto-timer?:false permanent ?:truetimerService= org.jboss.as.ejb3.timerservice.TimerServiceImpl@1b701e2 init ialExpiration=Wed Jun 15 09:49:37 BRT 2016 IntervalDuration(以毫秒为单位)=5000 n extExpiration=Wed Jun 15 09:49:47 BRT 2016 timeState=RETRY_TIMEOUT info=myTimer Interval]: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInt erceptor.java:187) 处的参数类型不匹配.......
小智 8
要解决该问题,您必须执行以下步骤:
@Schedule转到 Wildfly 服务器上的此路径:wildfly-13.0.0.Final/standalone/data/timer-service-data/
并删除您的内容,如下所示:eSocialWeb-1.0-SNAPSHOT.eSocialWeb-1.0-SNAPSHOT.ESocialTimer。
再次部署你的战争或罐子或耳朵并微笑!
因此,您再也不会看到此消息,除非您更改计时器中的某些内容@Schedule:
[org.jboss.as.ejb3.timer] (ServerService Thread Pool -- 92) WFLYEJB0161: Failed to reinstate timer 'eSocialWeb-1.0-SNAPSHOT.eSocialWeb-1.0-SNAPSHOT.ESocialTimer'
Run Code Online (Sandbox Code Playgroud)
用 @Timeout 注解的方法只允许有 javax.ejb.Timer 类型的参数。您无意中从 util 包 (java.util.Timer) 导入了 Timer。如果你修复了导入,计时器应该会像魅力一样工作:)。
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |