2016-06-20 11 views
1

Ich versuche, eine tägliche geplante Aufgabe in Java zu implementieren, um mit Glassfish zu arbeiten, ist es, dass jeden Tag die Datensätze der Datenbank zu aktualisieren, ist für eine Anwendung von Sammlungen, daher Salden und Zinsen Sie müssen täglich aktualisiert werden. Ich verwende:Wie implementiert man eine tägliche geplante Aufgabe mit Java und Glassfish?

  • Glassfish 4
  • Java EE 7 Web
  • JSF 2.2
  • Hibernate 4.3.1

Ich habe Beispiele mit Maven gesehen, so habe ich nicht klar noch, wenn jemand implementiert und kann mir eine Hand geben Ich bin dankbar

Antwort

0

Schließlich gelang es mir, offenbar Probleme mit Glasfischen hatte, nahm ihn weg und ich ging zurück zu addieren. Aber der schließlich Code

@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"); 
} 

Dieser Code von @BalusC in einem Beitrag ist JSF managed bean for scheduled tasks using a timer

1

Ihre Frage ist nicht sehr klar. Jedoch zwischen den Zeilen konnte man grob mit dem folgende Beispiel kommt mit der @Schedule Anmerkung:

//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(); 
} 

Dieses Verfahren ist in einem @Stateless Session-Bean (EJB oder) Objekt definiert, und jeden Tag um 17 ausgeführt wird : 00 Stunden. Die Anwendung wurde in Glassfish 4.0 als WAR-Datei bereitgestellt und wurde mit 2.2 JSF-Framework erstellt

+0

Danke für die schnelle Antwort und Kommentar in stateles als Bohne, diese Art hat die Bohne, Sitzung, im Hinblick auf sein, anfordern? Sie müssen etwas mehr zu web.xml hinzufügen? –

+0

Ich habe versucht, aber ich habe diesen Fehler: 'Schwerwiegend: Ausnahme beim Laden der App Schwerwiegend: Undeployment für Kontext/WebApplication3 fehlgeschlagen Warnung: EJB-Timer-Dienst ist nicht verfügbar. Timer für die Anwendung mit der ID 96104569243631616 werden nicht gelöscht. Schwerwiegend: Ausnahme beim Laden der App: EJB-Timer-Dienst ist nicht verfügbar. –

+0

sicher sein: import javax.ejb.Schedule; Import javax.ejb.Stateless; – Charles