代码之家  ›  专栏  ›  技术社区  ›  John Lopez

如何用java和glassfish实现每日计划任务?

  •  2
  • John Lopez  · 技术社区  · 8 年前

    我正在尝试用java实现一个每日计划任务,以使用glassfish,它是每天实现数据库的记录,用于集合的应用,因此余额和利息必须每天更新。我正在使用:

    • 玻璃鱼4
    • Java EE 7网站
    • JSF 2.2版
    • 休眠4.3.1

    我已经看到了Maven的例子,所以我还不清楚,如果有人实施了,并且能够帮助我,我很感激

    2 回复  |  直到 8 年前
        1
  •  2
  •   Leila Richardson-Noyes John Lopez    6 年前

    最后我成功了,显然我和玻璃鱼有问题,我把他带走了,然后我回去补充。 但最后的代码是

    @Singleton
    @Startup
    
    public class BackgroundJobManager {
    
    @Schedule(hour="0", minute="0", second="0", persistent=false)
    public void someDailyJob() {
        // Do your job here which should run every start of day.
        System.out.println("");
    }
    
    @Schedule(hour="*/1", minute="0", second="0", persistent=false)
    public void someHourlyJob() {
        // Do your job here which should run every hour of day.
    }
    
    @Schedule(hour="*", minute="*/15", second="0", persistent=false)
    public void someQuarterlyJob() {
        // Do your job here which should run every 15 minute of hour.
        System.out.println("Imprimir cada 15 mins");
    }
    
    @Schedule(hour="*", minute="*/1", second="0", persistent=false)
    public void someMinuteJob() {
        // Do your job here which should run every minute of the hour.
        System.out.println("Imprimir cada 1 mins");
    }
    

    此代码位于@BalusC的帖子中 JSF managed bean for scheduled tasks using a timer

        2
  •  1
  •   Basil Bourque    8 年前

    你的问题不是很清楚。然而,在行与行之间进行阅读,可以大致得出以下示例,使用 @Schedule 注释:

    //change the statuses, from 'Executing...' to 'Uncomplete' every at 5pm 
    @Schedule(hour = "17", persistent = false)
    public void runEndOfDay() throws Exception {
    
        System.out.println("Tickets updated on - " + new Date());
    
        /*Set tickets to status 'Uncomplete' if Lodged without being completed until the end of business*/
        query = em.createQuery("update Ticket t set t.status = 'Uncompleted' where t.status = 'Executing...' or t.status = 'Paused...' or t.status = 'Missing...' or t.status = 'Lodged'");
    
        query.executeUpdate();
    }
    

    此方法在@Stateless会话bean(或EJB)对象中定义,每天17:00执行。该应用程序已作为.war文件部署在GlassFish 4.0中,并使用JSF 2.2 Framework创建