Proporcionar zona horaria a Spring @Scheduled?

¿Cómo puedo configurar la zona horaria para un Spring basado@ Programado trabajo cron?

Fondo:

Tengo un trabajo que se ejecuta una vez al día, digamos a las 2 PM, usando Spring's@Scheduled anotación:

@Scheduled(cron = "0 0 14 * * *")
public void execute() {
    // do scheduled job
}

El problema es que 2 PM difiere entre diferentes servidores, porque Spring utiliza enTimeZone.getDefault() internamente. Además, elJavaDoc deTimeZone.getDefault()Establece que:

Obtiene la Zona horaria predeterminada para este host. La fuente de la zona horaria predeterminada puede variar con la implementación.

En otras palabras, la zona horaria no está determinada. Puede depender de la implementación de la JVM, la configuración de la zona horaria del servidor, la ubicación del servidor y otros factores desconocidos. En consecuencia, el trabajo cron se activa en diferentes momentos en diferentes servidores, a menos que haya una manera de establecer explícitamente qué zona horaria se debe usar.

Estoy usando Spring 3.2.2.

Actualizar

A partir de la primavera 4, primavera Jira temaSPR-10456 ha sido resuelto. En consecuencia, el@Scheduled anotación tiene una nuevazona atribuir para exactamente este propósito.

Respuestas a la pregunta(4)

Su respuesta a la pregunta