2012-04-11 181 views
6

我有一个带有main()方法的Java类。它包含进行一些数字处理和分析的逻辑。它计划每天运行一次,如果需要,可能会再次手动运行。例程使用Log4j来记录其活动。运行它并检查日志需要远程登录到主机框。将Java控制台程序转换为Web应用程序

我想将其转换为一个Web应用程序,在那里我可以通过网页触发它并查看日志的输出,理想情况下它是滚动的。

什么是最好的方法来做到这一点? Java webapp?一个简单的基于Web的脚本运行器?或者我可能不知道的任何其他选项。

更新: 一点上要求的更多细节:

  1. 能够从网页启动程序
  2. 能够看到的Log4j
  3. 滚动输出。如果我离开这个页面并再次回来,它应该让我知道最后一次运行仍在运行并显示日志。 我不需要有能力并行运行多个实例。
+2

你有任何java web框架的经验吗? – 2012-04-11 15:01:17

+0

嗯,一个简单的Swing应用程序不会这样做? – 2012-04-11 15:01:51

+0

@Shagaan - 是的,我选择的java web框架是Spring MVC – Danish 2012-04-11 15:03:26

回答

5

您是否考虑设置Hudson/Jenkins服务器来运行该任务?因为它具有您描述的功能,它是一个Java Web应用程序,它可以在不修改您的现有项目的情况下运行。

+0

作为额外的好处,您可以使用Jenkins构建Java源代码并进行测试。 – Bernard 2012-04-11 15:09:16

+0

,如果将来还有其他工作,则可以不加修改地添加它们。而且,如果你在团队环境中工作,人们可能已经熟悉了詹金斯。你可以免费获得bug修复(可能还有插件)。而... – Kevin 2012-04-11 15:11:48

+0

这看起来很酷!我一定会这样做。是否可以在Windows Azure云上部署? – Danish 2012-04-11 15:21:13

0

您可以尝试从JSP/JSF

+0

对不起,我不清楚我的要求。我已更新我的问题以反映它们。我想这会工作,但我想看到一个滚动日志。此外,进程可能会运行比HTTP超时更长的时间。 – Danish 2012-04-11 15:14:11

+0

我想网络服务仍然是你的情况的一个选择。不是吗? – vkantiya 2012-04-11 15:19:11

+1

您可以使用某种彗​​星/长轮询解决方案来滚动日志。 – Kevin 2012-04-11 15:26:28

1

调用Web服务你可以通过AJAX提交表单并使用Ajax与Spring MVC轮询新的日志条目,并将其添加到表在页面上。下面是一些AJAX调用的快速示例代码,用于使用JQuery和Spring MVC控制器方法来处理新日志条目。

JSP:

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

Spring MVC的控制器(返回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); 
    } 
} 

有几件我没有在这里提到(需要存储日志条目会话时的log4j日志等),但我希望至少有助于看到使用Spring MVC和AJAX实现这一点的方法。

相关问题