2016-06-20 4 views
1

私はjavaで日々のスケジュールされたタスクを実装しようとしています。グラスフィッシュで作業するには、毎日データベースのレコードを実現することです。コレクションのアプリケーション用です。したがって、残高と関心を毎日更新する必要があります。 javaとglassfishで日々のスケジュールされたタスクを実装する方法は?

  • JSF 2.2
  • Hibernateは4.3.1
  • 私はMavenを持つ例を見てきました

    • Glassfishの4
    • のJava EE 7のWebので、私は明確ではない持っている:私は使用していますまだ実装されていて、私に手を差し伸べることができたら、私は感謝します

    答えて

    0

    最終的に私は成功し、明らかにグラスフィッシュの問題を抱えていました。 しかし、最終的にはコード

    @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 15 minute of hour. 
        System.out.println("Imprimir cada 1 mins"); 
    } 
    

    このコードは@BalusCからポストに豆などstatelesでの迅速な対応やコメントをJSF managed bean for scheduled tasks using a timer

    1

    あなたの質問はあまり明確ではありません。しかし、一つはおおよそ@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時間。アプリケーションはGlassFish 4.0で.warファイルとしてデプロイされており、JSF 2.2 Frameworkを使用して作成されています。

    +0

    おかげでされ、その種類は、豆、セッション、ビューなければなりません要求? web.xmlに何かを追加する必要がありますか? –

    +0

    私は試してみましたが、このエラーがあります: '重大:アプリケーションのロード中に例外が発生しました 重大:コンテキスト/ WebApplication3のデプロイメントに失敗しました 警告:EJBタイマーサービスは利用できません。 ID 96104569243631616のアプリケーションのタイマーは削除されません 重大:アプリケーションをロード中に例外が発生しました:EJBタイマーサービスが利用できません。 –

    +0

    必ず:import javax.ejb.Schedule; import javax.ejb.Stateless; – Charles

    関連する問題