Я разрабатываю веб-сайт с Spring и Hibernate (сайт посвящен торговле акциями).
Ежедневно в 12 часов мне нужно отменить все заказы. В настоящее время мое решение использует запланированную задачу, которая запускается каждый час:
<task:scheduled ref="ordersController" method="timeoutCancelAllOrders" fixed-delay="60*60*1000" />
Затем в методе timeoutCancelAllOrders я получаю текущее время и проверяю, если он между 11:00 и 12:00 выполняет задачу
Как я его вижу, расписание задач начинается, когда я запускаю сервер (я использую Tomcat в Eclipse), но когда я его развертываю на онлайн-хостинге (я использую Openshift), я понятия не имею, когда время начала расписания задач.
Мой вопрос:
1: Как сделать это более автоматическим? Есть что-нибудь вроде myTask.startAt(12AM)?
2: Я живу во Вьетнаме, но сервер (Openshift) находится в США, поэтому здесь, как я делаю чек:
Date currentTime = new Date();
DateFormat vnTime = new SimpleDateFormat("hh:mm:ss MM/dd/yyyy ");
vnTime.setTimeZone(TimeZone.getTimeZone("Asia/Ho_Chi_Minh"));
String vietnamCurrentTime = vnTime.format(currentTime);
String currentHourInVietnam = vietnamCurrentTime.substring(0, 2);
System.out.println(currentHourInVietnam);
if(currentHourInVietnam.equals("00")){
// DO MY TASK HERE
}
Это выглядит глупо. Как я могу улучшить свой код?