Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10

    esecuzione di compiti automatici di un sistema su Web Container

    Buonasera a tutti.. passo subito al sodo: ho un interfaccia web standard(in html) e un architettura jsp+servlet sul web container JBoss.. le mie servlet permettono di inserire i dati di un utente associati ad un orario ben determinato.. il mio problema è che dalle specifiche mi viene richiesto che 24 ore prima il sistema automaticamente invia un email al gestore del sito con tutti gli utenti del giorno dopo iscritti nel sistema...
    Non ho in mente un'altra idea se non quella di creare una classe con un main che gira all'infinito, ottiene i risultati richiesti e manda l'e-mail... ma non è un po' troppo dispendioso dal punto di vista computazionale??

  2. #2

    Re: esecuzione di compiti automatici di un sistema su Web Container

    Originariamente inviato da Dariux88
    mi viene richiesto che 24 ore prima il sistema automaticamente invia un email al gestore del sito con tutti gli utenti del giorno dopo iscritti nel sistema...
    Non ho ben capito...forse vuoi dire che ogni giorno, il tuo sistema deve inviare un report via mail sulle iscrizioni avvenute il giorno prima?? Altrimenti spiegati meglio.

    Originariamente inviato da Dariux88
    .. ma non è un po' troppo dispendioso dal punto di vista computazionale??
    Dipende tutto da come lo si fa e dalla mole di dati di cui parliamo. Dai qualche numero e qualche specifica sul come sono memorizzati i tuoi dati (database? file?)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10

    Re: Re: esecuzione di compiti automatici di un sistema su Web Container

    Originariamente inviato da unomichisiada
    Non ho ben capito...forse vuoi dire che ogni giorno, il tuo sistema deve inviare un report via mail sulle iscrizioni avvenute il giorno prima?? Altrimenti spiegati meglio.

    Dipende tutto da come lo si fa e dalla mole di dati di cui parliamo. Dai qualche numero e qualche specifica sul come sono memorizzati i tuoi dati (database? file?)
    No.. scusami se non mi sono fatto capire.. allora io ho dei file sui quali registro delle prenotazioni(ognuna composta da un orario e dalla persona che si è prenotata).. per le verifiche scarico i dati su una SortedSet<Prenotazione> in modo da avere i dati ordinati per orario..
    Ora quello che mi si chiede è fare in modo che il sistema automaticamente invii un email al gestore del sito 24 ore prima rispetto all'orario di una prenotazione(indicandogli il nome di chi si è prenotato)..
    spero di essere stato comprensibile questa volta.. grazie..

  4. #4

    Re: Re: Re: esecuzione di compiti automatici di un sistema su Web Container

    Originariamente inviato da Dariux88
    No.. scusami se non mi sono fatto capire.. allora io ho dei file sui quali registro delle prenotazioni(ognuna composta da un orario e dalla persona che si è prenotata).. per le verifiche scarico i dati su una SortedSet<Prenotazione> in modo da avere i dati ordinati per orario..
    Ora quello che mi si chiede è fare in modo che il sistema automaticamente invii un email al gestore del sito 24 ore prima rispetto all'orario di una prenotazione(indicandogli il nome di chi si è prenotato)..
    spero di essere stato comprensibile questa volta.. grazie..
    Credo di aver capito. Allora se non hai vincoli particolari direi che la cosa più affidabile è affidare all'esterno dell'applicativo la parte di temporizzazione, mi spiego meglio:

    -Scrivi una servlet che ogni volta che viene invocata si spazzola tutti i tuoi dati alla ricerca di prenotazioni con data e ora maggiori o uguali ad ADESSO (momento dell'invocazione) meno un giorno, e tutte quelle che vengono pescate producono una notifica.
    -metti su un cron job che richiama, con periodicità da decidere la tua servlet. la periodicità dipende dalle tue esigenze, se hai necessità puoi farlo schedulare per chiamare la servlet anche ogni secondo (o forse anche frazioni di secondo ora non ricordo). Se non ti richiedono un grana così fine puoi lavorare con intervalli più "leggeri". Chiaramente maggiore è la frequenza più sottoponi a stressi il tuo sistema.

    Tieni anche presente che in ogni caso la precisione assoluta non è ottenibile perchè ci sono i tempi di latenza per il calcolo (che aumentano al crescere della mole dei dati) e i tempi di latenza intrinseci dei server smtp per l'invio effettivo della mail

    La soluzione con un cron job esterno te la consiglio rispetto a un thread interno all'applicativo, in quanto se casca il tomcat per qualche motivo ti ritrovi con il thread che cade con lui (cosa che può essere un problema o no , se poi lo tiri su di nuovo, dipende dalle tue esigenze).

    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10
    grazie veramente della soluzione che mi hai dato.. concettualmente ho capito come funziona.. ho provato con quartz-scheduler ma poi ho visto che si puo' fare anche con lo stesso JBoss che ha uno scheduler apposito.. qual'e' il metodo piu' semplice? e quello che mi turba di piu' e' : dove vanno inseriti i file creati?

  6. #6
    Originariamente inviato da Dariux88
    grazie veramente della soluzione che mi hai dato.. concettualmente ho capito come funziona.. ho provato con quartz-scheduler ma poi ho visto che si puo' fare anche con lo stesso JBoss che ha uno scheduler apposito.. qual'e' il metodo piu' semplice? e quello che mi turba di piu' e' : dove vanno inseriti i file creati?
    Non uso Jboss ne quindi tantomeno il suo scheduler e Quartz l'ho usato di striscio una volta quindi non ne sono un esperto. Entrambi comunque vanno giù se va giù il container (jboss nel tuo caso). Se ti serve un sistema autocontenuto probabilmente sono meglio del cron job, insomma dipende da quello che ti serve.
    Per quanto riguarda questo "dove vanno inseriti i file creati? " , di quali file parli? non hai detto che devi inviare dei report mail?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10
    avevo un po' di problemi nell'impostare quartz per jboss.. comunque ti ringrazio e alla fine ho capito che per quello che mi serviva ho usato semplicemente delle classi java apposite (tanto il mio progetto dovrà girare in locale e non fa nulla se cade jboss -cosa tra l'altro praticamente impossibile in locale)
    A chiunque serva posto la mia soluzione:
    Prima classe-->Servlet da avviare con l'avvio di JBoss
    codice:
    import java.util.Timer; 
    import java.util.TimerTask;
     import java.util.Date; 
    import javax.servlet.http.HttpServlet;  
    
    public class AutomaticTask extends HttpServlet{ 	
    private static final long serialVersionUID = 1L; 	 	
    
    public void init(){ 		
              Timer t=new Timer(true); 		
               TimerTask mioTask=new MioTask(); 		
              t.scheduleAtFixedRate(mioTask, new Date(), 1000*60);
     	}
       }
    Seconda Classe--> Estende TimerTask (che implementa Runnable)

    codice:
    import java.util.TimerTask;  
    public class MioTask extends TimerTask{
          public void run(){
                  //qui mettiamo il codice che si deve eseguire ciclicamente
           }
    }
    Infine bisogna impostare la servlet nel file web.xml (dentro WEB-INF) in modo che la riconosca all'avvio
    codice:
    ..........................
    <servlet> 
    <servlet-name>AutomaticTask</servlet-name> 
    <servlet-class>AutomaticTask</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet>
    ...................
    <servlet-mapping>
        <servlet-name>AutomaticTask</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
    ....................
    Mi raccomando importante è il *.do nell'url-pattern e il valore 1 in load-on-startup..
    Spero di essere stato d'aiuto a qualcuno.. Ciaooooooo e grazie a te unomichisiada

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.