6

@ScheduleアノテーションをJBossAS7で機能させる方法を知っている人はいますか?

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

JBossAS7.1.1を持っている-最終

多分私は何かを忘れました、誰かが私を正しい方向に向けることができますか?

アップデート:

JBossがEJBをJNDIに登録することを知っています:

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

UPDATE2

コメントで述べたように解決されました

4

3 に答える 3

6

タイマーサービスはEJBサービスです。またはセッション BeanImportStatementScheduleである必要があります。EJB 3.1 仕様のセクション 18.2 から:@Stateless@Singleton

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

INFOログ ステートメントは誤解を招きます。JBoss は EJB を登録しません。@ManagedBeanアノテーション (Javadoc)で定義されているのと同じ命名スキームを使用するだけです。

[..] マネージド Bean 名は、Java EE モジュール内で一意である必要があります。名前付きマネージド Bean ごとに、Java EE コンテナは、EJB コンポーネントに使用されるのと同じ命名方式を使用して、JNDI で次のエントリを使用できるようにする必要があります。アプリケーションの名前空間で:

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

Managed Bean を含むモジュールのモジュール名前空間で:

java:module/<bean-name>

于 2012-05-01T11:04:50.390 に答える
4

追加できます、あなたが書くなら

@Schedule(minute="*")

真夜中にのみ起動します。hour パラメータはデフォルトの0であるためです。

試してください: またはこのようなもの。私の場合、それは役に立ちました。 @Schedule(minute = "/1", hour = "")

于 2012-07-24T14:47:58.447 に答える
0

時間を指定する必要があります。試してください:

@Schedule(hour="\*", minute="\*")
于 2016-02-18T17:03:41.553 に答える