2012-04-11 8 views
6

Tengo una clase Java con un método main(). Contiene lógica para hacer algunos números de análisis y crunching. Está programado para ejecutarse una vez al día y puede ejecutarse manualmente de nuevo si es necesario. La rutina usa Log4j para registrar sus actividades. Ejecutarlo y verificar el registro requiere un inicio de sesión remoto en el cuadro de host.Convierta un programa de consola Java a Webapp

Me gustaría convertirlo a una aplicación web, donde puedo activarlo a través de una página web y ver el resultado del registro, idealmente mientras se desplaza.

¿Cuál sería la mejor manera de hacerlo? ¿Una aplicación web de Java? ¿Un simple script runner genérico basado en web? o cualquier otra opción de la que no tenga conocimiento.

Actualización: detalle un poco más sobre los requisitos:

  1. capacidad de lanzar el programa desde una página web
  2. Capacidad para ver la salida de desplazamiento de Log4J
  3. Si dejo la página y vuelva, debería decirme que la última ejecución aún se está ejecutando y mostrar el registro. No necesito tener la capacidad de ejecutar varias instancias en paralelo.
+2

¿Tiene experiencia con cualquier framework de java web? –

+0

Um, ¿una simple aplicación Swing no funcionará? –

+0

@Shagaan - Sí, mi framework de Java web de elección es Spring MVC – Danish

Respuesta

5

¿Ha considerado configurar un servidor Hudson/Jenkins para ejecutar la tarea? Debido a que tiene las características que describe, ES una aplicación web de Java, y funcionaría sin modificaciones en su proyecto existente.

+0

Como una ventaja adicional, puede usar Jenkins para compilar su código fuente de Java y probarlo también. – Bernard

+0

y si tiene trabajos adicionales en el futuro, puede agregarlos sin modificaciones. Y, si trabajas en un entorno de equipo, es posible que las personas ya estén familiarizadas con Jenkins. Y obtienes correcciones de errores (y posiblemente complementos) gratis. Y ... – Kevin

+0

¡Esto se ve muy bien! Definitivamente voy a dar una oportunidad. ¿Es posible implementar esto en la nube de Windows Azure? – Danish

0

puede intentar llamar a servicio web de JSP/JSF

+0

Lo siento, no estaba claro en mis requisitos. He actualizado mi pregunta para reflejarlos. Supongo que esto funcionaría, pero me gustaría ver un registro de desplazamiento. Además, el proceso puede durar más que el tiempo de espera de HTTP. – Danish

+0

Supongo que el servicio web sigue siendo una opción en su caso. no es así? – vkantiya

+1

podrías hacer scroll log con algún tipo de cometa/larga solución de sondeo. – Kevin

1

Se podría enviar el formulario a través de AJAX y el uso de Ajax con Spring MVC para sondear nuevas entradas de registro y añadirlos a una tabla en la página. Aquí hay un código de muestra rápido para llamar a AJAX para verificar si hay una nueva entrada de registro usando el método de controlador JQuery y Spring MVC para manejarlo.

JSP:

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

controlador MVC primavera (devuelve 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); 
    } 
} 

Hay algunas piezas que no he mencionado aquí (necesitaría para almacenar entradas de registro de sesión cuando log4j registros, etc.), pero espero que al menos sea útil ver una forma de hacerlo utilizando Spring MVC y AJAX.

Cuestiones relacionadas