0

ejb タイマーを作成しようとしていますが、成功しましたが、正常にデプロイできませんでした。初めてejbタイマーを使用しているので、正しく行っていない可能性があります。誰かが私を正しい方向に導いてくれたらとても親切です。ありがとうございました

http://www.adam-bien.com/roller/abien/entry/simplest_possible_ejb_3_16のチュートリアルに従いました

import javax.ejb.Schedule;
import javax.ejb.Stateless;
import javax.ejb.Timer;

@Stateless
public class ScheduleRoutine {

/**
 * Default constructor. 
 */
public ScheduleRoutine() {
    // TODO Auto-generated constructor stub
}

@Schedule(second="*/1", minute="*",hour="*", persistent=false)
public void scheduledTimeout(final Timer t) {
    System.out.println("@Schedule called at: " + new java.util.Date());     
}
}

これは私が使用しているコードで、問題はないと思います。JBoss AS 7.1.1 を eclipse で使用しています。私が行っているのは「サーバー上で実行」することだけですが、想定どおりに出力を表示できません。

編集:(解決策)

Eclipse から実行しようとしたときに機能しませんでしたが、手動で jar をエクスポートしようとしたところ、正常にデプロイされました。

4

1 に答える 1

1

jboss 7.1でも同じ問題がありました。この問題を解決するために、スタブ メソッドを ejb に追加し、@Timeout で注釈を付けました。

@Timeout
public void stub(){
   // NOOP
}

また、@Stateless を @Singleton および @Startup に変更して、コードが次のようになるようにします。

import javax.ejb.Schedule;
import javax.ejb.Startup;
import javax.ejb.Timer;
import javax.ejb.Timeout;

@Singleton
@Startup
public class ScheduleRoutine {

    /**
     * Default constructor. 
     */
    public ScheduleRoutine() {
        // TODO Auto-generated constructor stub
    }

    @Timeout
    public void stub() {
       // NOOP
    }

    @Schedule(second="*/1", minute="*",hour="*", persistent=false)
    public void scheduledTimeout(final Timer t) {
        System.out.println("@Schedule called at: " + new java.util.Date());     
    }
}
于 2015-01-20T14:41:23.423 に答える