2012-04-11 14 views
6

Ho una classe Java con un metodo main(). Contiene la logica per eseguire alcuni scricchiolii e analisi del numero. È programmato per essere eseguito una volta al giorno e potrebbe essere eseguito manualmente di nuovo se necessario. La routine utilizza Log4j per registrare le sue attività. L'esecuzione e la verifica del log richiedono un accesso remoto alla casella host.Convertire un programma Java Console in Webapp

Vorrei convertirlo in un'applicazione Web, in cui posso attivarlo tramite una pagina Web e vedere l'output del registro, idealmente mentre scorre.

Quale sarebbe il modo migliore per farlo? Una webapp Java? Un semplice runner di script basato sul web generico? o qualsiasi altra opzione di cui potrei non essere a conoscenza.

Aggiornamento: Un po 'più in dettaglio sui requisiti:

  1. Possibilità di lanciare il programma da una pagina web
  2. Possibilità di vedere l'output di scorrimento da Log4j
  3. Se lascio pagina e torna di nuovo, dovrebbe farmi sapere che l'ultima esecuzione è ancora in esecuzione e mostra il registro. Non è necessario avere la possibilità di eseguire più istanze in parallelo.
+2

Hai esperienza con qualsiasi framework web java? –

+0

Um, una semplice applicazione Swing non funzionerà? –

+0

@Shagaan - Sì, il mio framework Java di scelta è Spring MVC – Danish

risposta

5

Avete considerato la creazione di un server Hudson/Jenkins per eseguire l'attività? Poiché ha le caratteristiche che descrivi, è un'app web java e funzionerebbe senza modifiche al tuo progetto esistente.

+0

Come bonus aggiuntivo, puoi usare Jenkins per creare il tuo codice sorgente Java e testarlo. – Bernard

+0

e se in futuro si hanno lavori aggiuntivi, è possibile aggiungerli senza modifiche. E, se lavori in un ambiente di squadra, le persone potrebbero già avere familiarità con Jenkins. E ottieni correzioni di bug (e possibilmente plug-in) gratuitamente. E ... – Kevin

+0

Sembra molto bello! Darò sicuramente un colpo. È possibile distribuirlo su Windows Azure Cloud? – Danish

0

si può provare a chiamare web-service da jsp/JSF

+0

Mi dispiace non essere stato chiaro sulle mie esigenze. Ho aggiornato la mia domanda per rispecchiarli. Immagino che funzionerebbe, ma mi piacerebbe vedere un registro a scorrimento. Inoltre, il processo potrebbe essere più lungo del timeout HTTP. – Danish

+0

Suppongo che il web-service sia ancora un'opzione nel tuo caso. non è vero? – vkantiya

+1

si potrebbe fare lo scorrimento del registro con una sorta di cometa/soluzione di polling lungo. – Kevin

1

Si potrebbe inviare il modulo tramite la tecnologia AJAX e utilizzare Ajax con Spring MVC per il polling per le nuove voci di registro e aggiungerli a un tavolo sulla tua pagina. Ecco un breve codice di esempio per la chiamata AJAX per verificare la presenza di una nuova voce di registro utilizzando il metodo JQuery e Spring MVC controller per gestirlo.

JSP:

$.getJSON("logs.htm", { lastLogId: logId }, function(response) { 
    $('#myTable tr:last').after('<tr><td>' + response + '</td></tr>'); 
}); 

Spring MVC Controller (ritorna JSON):

@Controller 
public class LogController { 

    @RequestMapping("logs.htm") 
    public @ResponseBody String getLogs(@RequestAttribute("lastLogId") Integer lastLogId, HttpSession sess) { 
     LogList logs = sess.getAttribute("logs"); // just an example using user-defined class "LogList" 
     return logs.getNextLog(lastLogId); 
    } 
} 

ci sono un paio di pezzi non ho menzionato qui (avrebbe bisogno di memorizzare le voci di log di sessione quando log4j log, ecc.), ma spero che sia almeno utile vedere un modo per farlo usando Spring MVC e AJAX.

Problemi correlati