automatische email nach 6 tagen!

  • Themenstarter Themenstarter c0CoKabAnA
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

c0CoKabAnA

Gast
Hi!
und zwar bin ich gerade dabei ein bewertungsprogramm zu schreiben!
und wenn jemand nach 6tagen noch nicht bewertet hat soll er eine email bekommen!
wie man emails verschickt weiß ich nur nicht wie man das mit den 6 tagen macht!
bin ich da überhaupt hier richtig? 😛

ich arbeite mit JAVA, JSP und einem bea application server!

gibts da irgend ne möglichkeit?


mfg
 
- liste irgendwo erstellen mit <name> und <tage>
- täglich prüfen, ob <name> bewertung gegeben hat und am ende des tages <tage> inkrementieren
- täglich prüfen, ob <tage> größer 6 ist, wenn ja -> mail an <name>
 
Hi!
Sorry das ich mich erst so spät wieder melde aber ich hab gehofft diese auto email sache nichtmehr zu benötigen... jetzt brauch ich es wieder 🙁

wie kann ich täglich nach etwas überpfrüfen? muss ja alles automatisch sein!

mfg
 
einfachste moeglichkeit... einen Thread erstellen der alle 6 Tage ueberprueft ob User X schon bewertet hat

also
Code:
new Thread() {
   public void run() {
       while(true) {
          Thread.sleep(6 * 24 * 60 * 60 * 1000); // solten 6 tage in millisek. sein
          // mach jetzt was
       } 
   }
}.start();

als einfachste form
 
Gut danke dann les ich mich mal ins Thema Thread besser ein und werde es dann wohl so lösen!

thx
 
oder, wenn du windows nutzt, kannste dort auch nen scheduled job einrichten, welcher einmal am tag die java-klasse ausführt (mit batch oder so), womit die jvm nicht den ganzen tag laufen muss...
 
Also mit Thread würd ich es wirklich nicht machen.
Stürzt der Server ab, ist der Thread weg!

Am Besten du legst die Tickets in eine Datenbank und nutzt wie schon geschrieben wurde einen Cronjob.
 
> Stürzt der Server ab, ist der Thread weg

wenn der Server weg ist, ist die fehlende Email-Benachrichtigung wohl das geringste Problem,
dass die Daten in eine DB gehören und z.B. nach neuen Programmstart der nächste Zeitpunkt neuberechnet werden muss ist davon ja unabhängig
 
Ich würde dir zu einem Quarzjob (Spring) raten.
Ich gehe davon aus, dass auch eine Datenbank vorhanden ist. Dann würde ich den Zeitpunkt, an dem das mail versendet werden soll, zu deinem Userobjekten in der Datenbank speichern.
Der Quartzjob ist so eingerichtet, dass er z.B. alle Stunden eine Methode anstößt, die die Datenbank nach allen Usern abfragt, deren Zeitpunkt abgelaufen ist und versendet das mail.

Vorteile:
- OS-unabhängig: du brauchst dich nicht um einen Windows-Scheduler Task bzw. Cronjob kümmern. Man hat nicht immer Rechte einen einzurichten.
- Ressourcenschonend: du hast - im Vergleich zu oben vorgeschlagener Lösung mit den Threads - nicht für jeden User einen eigenen Thread laufen. Ok, könntest du genauso mit der DB machen aber warum das Rad zweimal erfinden. Threadhandling im Applicationserver ist nicht ganz trivial.
- Bei einem Restart des Bea gibts keine Probleme, höchstens eine Verzögerung.

Der Quartzjob ist übrigens von der Konfiguration her gleich wie ein Cronjob.

Zum Thema eigene Threads wurde ja eh schon einiges gesagt.

ms
 
Ich würde dafür glaube ich eine Mischung aus den Vorschlägen hier angehen.

Zum User wird auch der Zeitpunkt 0 in der Datenbank gespeichert, über den ich dann die 6 Tage ausrechnen kann.
Mit dem Start des Servers, wird auch ein Timer gestartet, der x-mal pro Tag über die Datenbank geht und sich die entsprechenden User raussucht und denen eine Mail schickt.
 
Hi!

also ich hab mich jetzt mal in quarzjob eingelesen und gemerkt das ich da nich viel check! drum hab ichs lieber mit Threads versucht!

soweit funktioniert auch alles!

nur starte ich den thread auf einem applikation server(bea 9.2) und wollte ihn dort eigentlich auch beenden können! nur weiß ich nicht wie ich den thread wieder finde!
ich habe den Thread so global wies geht in meiner java klasse deklariert und sobald ich auf dem app server den thread starte habe ich sobald ich die internetseite wechsel den thread nichtmehr!

wie bekomme ich den wieder???

(ich habe es so gemacht das ich wenn ich auf einer JSP seite auf den button 'starten' drücke das es in die funktion starteThread hupft und wenn ich auf der gleichen seite auf 'stoppen' drücke hupft es in die funktion stoppeThread!)
 
Du scheinst den Thread im falschen Scope liegen zu haben. Der muß natürlich Applikationsweit laufen...
 
weiß irgendwer wie ich rausfinden kann wo der thread liegt?

also innerhalb der start funktion habe ich noch die möglichkeit mit hilfe der variable alles rauszufinden was man über die variable rausfinden kann!
nach beenden der funktion wars das aber!
kann ich irgendwie die speicheradresse oder sonst irgendwas rausfinden des ich danach dann wieder suche und somit den Thread wieder habe?
 
ich muss übrigens nur noch irgendwie rausfinden ob der Thread läuft!

also muss ich den Thread nur irgendwie finden und per isAlive() nachschauen ob er bereits gestartet wurde oder?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben