2016-06-15 17 views
3

何か間違っていますか?なぜこのシンプルなスケジューラーが動作しないのですか?

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で注釈

+0

古いtempと作業ディレクトリを削除してdeployディレクトリをクリーンアップします(実稼働環境ではなく、テストインストールで作業していると仮定します)。ドメインを再起動すると役立ちます。 – mjn

+0

おかげです、私はそれをやったし、ログのエラーが変更され、私は質問にそれを置く。 @mjn – fdam

+0

@Schedule(秒= "*"、分= "*"、時= "*")機能を使用するとうまくいきます。私はwildflyを試します8.3 – fdam

答えて

2

方法は、型javax.ejb.Timerから引数を持たせることができます。あなたは間違いなく、utilパッケージ(java.util.Timer)からTimerをインポートしました。インポートを修正すると、タイマーはチャームのように機能します:)。

+0

あなたはそうです、トリック。私はそれをし、うまく動作します、ありがとう! – fdam

関連する問題