4

スケジュールされたタスクで奇妙な動作が発生しました。私は次の設定を持っています

<task:scheduled-tasks>
      <task:scheduled ref="servicioEjecucionReportes" method="ejecutar" cron="0 0 * * * *" />
      <task:scheduled ref="servicioEjecucionReportes" method="ejecutarReintentos" cron="0 30 * * * *" />
      <task:scheduled ref="servicioEjecucionReportes" method="enviarReporteDiario" cron="0 15 0 * * *" />
</task:scheduled-tasks>

そして、エグゼキュータは次のように構成されます。

<task:annotation-driven executor="asyncExecutor" scheduler="taskScheduler" />
<task:executor id="asyncExecutor" rejection-policy="CALLER_RUNS" pool-size="16" />
<task:scheduler id="taskScheduler" pool-size="8" />

つまり、LinuxとMac OSを使用して開発しており、3つのタスクは正しく実行されますが、Windows 7 Serverである展開サーバーでは、最初の2つは正しく実行され、3つ目は正しく実行されません。

毎日00:15に実行する3番目のタスクが必要です。

構成を変更しようとしましたが、動作は常に同じです。開発環境とテスト環境ではすべてが正常に機能しますが、実稼働環境では機能しません。

どこを見ればいいのか、何が悪いのか迷っています。

Beanは次のように宣言されます。

<bean id="servicioEjecucionReportes" class="com.mycompany.beans.ServicioEjecucionReportesImpl" />

そして、インターフェースは次のとおりです。

public interface ServicioEjecucionReportes {

   public void ejecutar();

   public void ejecutarReintentos();

   public void enviarReporteDiario();
}

編集:追加情報、実行しようとしているタスクでさえサーバーログに表示されない、春のバージョンは3.1.0です。

4

2 に答える 2

1

Windowsのスケジュールされた非同期メソッドに問題があるようです。これは、JVMがWindowsでスレッドを作成する方法に関連しています

@Asyncを削除して、機能するかどうかを確認してください

于 2012-06-26T15:05:24.983 に答える
0

推測:万が一、本番環境で非常に長時間実行ejecutarされているタスクはありますか?またはejecutarReintentos。私が疑問に思っているのは、スケジューラーでCaller_RUNSをトリガーするasyncExecutorスレッドプールが使い果たされており、使用可能なスケジューラープールがまったくない可能性があるということです。

于 2012-06-21T15:34:53.497 に答える