Java执行shell命令自动更新视图

时间:2013-02-11 09:51:16

标签: java jsp command-line streaming

我想实现以下目标但我无法找到解决问题的正确方法。我的webapp在某些时候让用户能够远程按buttonexecute command {实际执行maven build:{{1} })。我想要的是使用mvn clean package的控制台输出自动更新jsp页面,这是Jenkins在执行mvn command时所做的事情。我不希望用户等到整个命令输出可用,即命令已经完成,但逐步渲染输出(例如,每秒渲染一些输出行或类似的东西)。我正在使用build,但如果有人不得不提出一个没有它的解决方案,那就没问题了。

我的第一个是在单独的Spring/Spring MVC命令行thread中生成,并将用户的job与正在执行命令的sessionid相关联,但我不知道实际上知道如何从这一点开始,或者即使这是一个正确的解决方案。

有人做过类似的事吗?是否有threadid方法来实现这样的功能?

由于

1 个答案:

答案 0 :(得分:0)

我会设计这样的东西。

Upon Click
    Generate ID
    Start Thread for executing the Task

Thread
    Create an entry for this ID in a global Map
    Start Process
    Watch OutputStream from the Process forked for executing the build
    Buffer to accumulate X lines
    Re-Set the X lines of String as Value for that ID in Map

Auto-Refresh with ID from your Page
    Check for the String and Update Page

也许,您可以在地图中获取更多详细信息,例如作业是否正在进行,失败或已完成,以便于管理。