何か間違っていますか?なぜこのシンプルなスケジューラーが動作しないのですか?
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());
}
}
スタック:JDK 8、Wildfly 10
エラーログ:
09:31:31781が[org.jboss.as.ejb3(EJBデフォルト - 9)WARN WFLYEJB0161ました: タイマー 'config-api.config-api.CIScheduler' (id = f571b03a-efa 9-467d-a9de-b17d88bf54c7)を永続状態から復元できませんでした 09:31:31,783 ERROR [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 =水6月15日午前9時20分46秒BRT 2016 intervalDuration = 5000 N extExpiration =水6月15日9時31分36秒BRT 2016 timerState = RETRY_TIMEOUT情報= myTimer間隔( ミリ秒で)]: javax.ejb.EJBException:java.lang.IllegalArgumentExceptionが:から抽出JA [email protected]
サンプル:https://examples.javacodegeeks.com/enterprise-java/ejb3/timer/ejb-timer-service-example/
UPDATE:は、私は、データとTMPフォルダをきれいにし、エラーログに変更:
09:49:42178 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 @ 1b701e2 initialExpiration = Wed Jun 15 09:49:37 BRT 2016 intervalDuration(ミリ秒単位)= 5000 nextExpiration = Wed Jun 15 09: 49:47 BRT 2016 timerState = IN_TIMEOUT info = myTimerInterval]が再試行される09:49:42,179 INFO [EJBデフォルト-2] WFLYEJB0023:タイマーの[を再試行する]:[id = 26b74afb-625D-4007-a786-1c0caa92a70b timedObjectId = configの-api.config-api.CIScheduler オートタイマー:?偽永続:?真タイマー [email protected] initialExpiration = Wed Jun 15 09:49:37 BRT 2016 intervalDuration(ミリ秒単位)= 5000 nextExpiration = Wed Jun 15 09:49:47 BRT 2016 timerState = IN_TIMEOUT info = myTimerInterval] 09:49:42,181エラー[org。 jboss.as.ejb3](EJB デフォルト - 2)WFLYEJB0022:タイマの再試行タイムアウトのエラー: 35 [id = 26b74afb-625d-4007-a786-1c0caa92a70b timedObj ectId = config-api.config-api.CIScheduler auto-timer?:false 永続?:true timerService = org.jboss.as.ejb3.timerservice。 TimerServiceImpl @ 1b701e2 INIT ialExpiration =水6月15日9時49分37秒BRT 2016 intervalDuration = 5000 N extExpiration =水6月15日9時49分47秒BRT 2016 timerState = RETRY_TIMEOUT情報= myTimer間隔( ミリ秒で): javax.ejb.EJBException:java.lang.IllegalArgumentException:引数 型が一致しない at org.jboss.as.ejb3.tx.CMTTxInterceptor。handleExceptionInOurTx(CMTTxInt erceptor.java:187) ....... @Timeoutで注釈
古いtempと作業ディレクトリを削除してdeployディレクトリをクリーンアップします(実稼働環境ではなく、テストインストールで作業していると仮定します)。ドメインを再起動すると役立ちます。 – mjn
おかげです、私はそれをやったし、ログのエラーが変更され、私は質問にそれを置く。 @mjn – fdam
@Schedule(秒= "*"、分= "*"、時= "*")機能を使用するとうまくいきます。私はwildflyを試します8.3 – fdam