2012-05-01 3 views
6

@ScheduleアノテーションをJBoss AS 7で作成する方法を知っていますか?JBoss AS 7.1 - @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"); 
    } 

} 

私は毎分のログメッセージを受け取る期待していないが、何も;)

私はこれらのフォーラムのスレッドをチェックし、何も助けなかっ:

https://community.jboss.org/message/623574

https://community.jboss.org/message/621893

https://community.jboss.org/message/637567

Aは7.1.1-finalとしてのJBoss

たぶん私は何かを忘れてしまったが、誰もが正しい道に私を指すことができますしてください?

UPDATE:

私はJBossがJNDIに自分のEJBを登録することを知っている:

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 

アップデート2

コメント

+3

このスレッド、特に "時間" パラメータを参照してください: http://stackoverflow.com/questions/10246606/java-ee-scheduler-を –

+1

時間パラメータを設定して問題を解決しました。しかし、@Schedule(minute = "18"、hour = "15")のような正確な値で試しましたが、何も起こりません。 – rkosegi

答えて

6

Timerサービスに言及したように、それは解決されていますEJBサービスです。 ImportStatementScheduleは、@Statelessまたは@SingletonセッションBeanにする必要があります。 EJB 3.1仕様のセクション18.2:

自動的に作成されたタイマーの場合、タイムアウトメソッドは、Scheduleアノテーションで注釈付けされたメソッドである可能性があります。タイマーは、ステートレスセッションBean、シングルトンセッションBean、メッセージ駆動型Bean、および2.1エンティティBean用に作成できます。ステートフルセッションBeanのタイマーは作成できません。

INFOログステートメントは誤解を招きます。 JBossはEJBを登録しません。

は[..]管理対象Bean名は、Java EEモジュール内で一意である必要があります:それはちょうど@ManagedBean注釈(Javadocの)によって定義されたのと同じ命名規則を使用しています。名前付きManaged Beanごとに、Java EEコンテナは、EJBコンポーネントで使用されているのと同じ命名規則を使用して、JNDIで次のエントリを使用可能にする必要があります。マネージドBeanを含むモジュールのモジュール名前空間で

java:app/<module-name>/<bean-name>

::アプリケーションの名前空間で

java:module/<bean-name>

+0

+1を参考にしていますが、ステートレスまたはシングルトンのアノテーションの前に試してみましたが、今ではその問題は@Nick Wilsonが時間パラメータで述べたとおりであることが分かりました。 – rkosegi

+0

thx、@rkosegi。 '@Starteless'や' @Singleton'を使わずに '@ Schedule'を使うことができますか? – kraftan

+0

いいえ、時間パラメータを「*」に設定するまでは動作させることができませんでした。現在、私はStatelessアノテーションを使用しています。 – rkosegi

4

私は、追加することができますが

を書く場合 @Schedule(minute="*")

それは真夜中にのみ発火するでしょう。時間パラメータは、デフォルト:です。

試してみてください。 @Schedule(minute = "/1", hour = "") などです。 私の場合は助けになりました。

0

あなたがしよう、時間を指定する必要があります。

​​3210