1

初めて Spring タスク エグゼキュータ システムを使用していますが、うまく動作しません...

これについてはすでにSOに関するさまざまな投稿を読みましたが、タスクが実行されていることを示す兆候はありません。まず、サービス Bean で @Scheduled アノテーションを試してみましたが、AOP プロキシで問題が発生したことを読んだ後、そのままの XML 構成を使用しています。

<task:executor id="executorWithPoolSizeRange"
        pool-size="5-25"
        queue-capacity="100" />       
 <task:scheduler id="taskScheduler" pool-size="2" /> 
 <task:scheduled-tasks>
 <task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>

fileWriter Bean は通常の Spring Bean であり、テスト メソッドは次のようになります。

public void test (){
   System.err.println("run in job");
}

DEBUG ロギング設定で実行すると、次のことがわかります。

  1. Bean がロードされ、初期化されます。
  2. 「メソッド」属性の名前を間違えると、例外がスローされるため、タスク定義は少なくとも解析されます。
  3. デバッグ ステートメントには、タスクのアクティブ化を示すものは何もありません。
  4. テスト メソッドのブレークポイントがトリガーされることはありません。

アプリまたはスプリング ユニット テストの実行中に 5 秒ごとに、 test() メソッドからのメッセージがコンソールに出力されることを期待しています。私は Spring 3.0.6 を使用しており、Mac 10.6 Java 6 上の Eclipse 3.7 で Jetty を介して実行されるアプリをテストしています。使用する他のすべての Spring 機能 (データベース、セキュリティ、MVC は正常に動作します)。どんな提案にも本当に感謝します!

4

2 に答える 2

1

If you haven't try adding Quartz to your classpath (you shouldn't need it but...).

Whats most likely happening is that the scheduler is running and failing to execute your proxy. The proxy probably throws an exception and the scheduler's exception policy is probably discarding it.

The other option... (and I am probably going to get down voted) is to not use Springs scheduler. Unless you need the Quartz Cron stuff I find Springs Task scheduler overly complicated and yet weak compared to:

Guava's ListeningScheduledExecutorService

The listening executor service will allow you to chain events. You can easily wrap the above in some service bean. Yes I know you probably want the decoupling that Spring provides... but you can get far better decoupling and event based by combing the ExecutorService and Guava's EventBus.

于 2012-10-16T01:55:00.817 に答える
0

これを試して:

 <task:scheduled-tasks scheduler="taskScheduler">
   <task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
 </task:scheduled-tasks>
于 2012-10-15T09:37:23.523 に答える