将Java控制台程序转换为Webapp

将Java控制台程序转换为Webapp,java,web-applications,Java,Web Applications,我有一个带有main()方法的Java类。它包含一些进行数字运算和分析的逻辑。它计划每天运行一次,如果需要,可以手动再次运行。该例程使用Log4j来记录其活动。运行它并检查日志需要远程登录到主机框 我想把它转换成一个web应用程序,在那里我可以通过一个web页面触发它并查看日志的输出,理想情况下是在它滚动时 最好的方法是什么?Java网络应用程序?一个简单的基于web的通用脚本运行程序?或者我可能不知道的任何其他选择 更新: 关于需求的更多细节: 从网页启动程序的能力 能够查看Log4j的滚动输

我有一个带有
main()
方法的Java类。它包含一些进行数字运算和分析的逻辑。它计划每天运行一次,如果需要,可以手动再次运行。该例程使用Log4j来记录其活动。运行它并检查日志需要远程登录到主机框

我想把它转换成一个web应用程序,在那里我可以通过一个web页面触发它并查看日志的输出,理想情况下是在它滚动时

最好的方法是什么?Java网络应用程序?一个简单的基于web的通用脚本运行程序?或者我可能不知道的任何其他选择

更新: 关于需求的更多细节:

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

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

    您可以尝试从jsp/jsf调用web服务。

    您可以通过AJAX提交表单,并使用AJAX和Spring MVC轮询新的日志条目,并将它们添加到页面上的表中。下面是一些AJAX调用的快速示例代码,用于使用JQuery和SpringMVC控制器方法检查新的日志条目

    JSP:


    有几点我在这里没有提到(当log4j记录日志时,需要将日志条目存储到会话中,等等),但我希望至少能找到一种使用Spring MVC和AJAX来实现这一点的方法。

    你有使用java web框架的经验吗?嗯,简单的Swing应用程序不行?@Shagaan-是的,我选择的JavaWeb框架是SpringMVC@alpha123-我希望它是web的,这样我就可以从任何设备、PC/手机启动和查看它/Tablet@Danish我懂了。Java web应用程序是出了名的重量级,尤其是Spring之类的应用程序。此外,如果您想让它实时显示日志输出,可能需要使用Comet之类的工具。在Java中没有太多乐趣。作为额外的奖励,您可以使用Jenkins构建Java源代码并对其进行测试。如果您将来有额外的工作,您可以添加它们而无需修改。而且,如果你在团队环境中工作,人们可能已经熟悉詹金斯了。你还可以免费获得bug修复(可能还有插件)。而且…这看起来很酷!我一定要试一试。是否可以在Windows Azure云上部署此应用程序?我还没有这样做,但它只是一个java Web应用程序。因此,如果您可以安装java、tomcat并部署war,我认为这是可能的。如果你想签出并构建你的代码,它需要访问你的svn/git回购。很抱歉,我不清楚我的要求。我更新了我的问题以反映他们。我想这会有用,但我想看看滚动日志。另外,进程的运行时间可能比HTTP超时时间长。我想在您的情况下,web服务仍然是一个选项。不是吗?你可以用某种comet/long轮询解决方案来滚动日志。确实是这样!我已经使用SpringMVC开发了几个站点。如果我要走这条路,我不是100%确定如何满足我的所有要求。因此,在我走这条路之前,我需要有人来帮助我。
    $.getJSON("logs.htm", { lastLogId: logId }, function(response) {
        $('#myTable tr:last').after('<tr><td>' + response + '</td></tr>');
    });
    
    @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);
        }
    }