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

Java执行shell命令自动更新视图,java,jsp,command-line,streaming,Java,Jsp,Command Line,Streaming,我想实现以下目标,但我找不到适当的方法来解决它。我的webapp,在某一点上让用户能够按下按钮并远程执行命令(实际执行maven构建:mvn clean package)。我想要的是,使用mvn命令的控制台输出自动更新jsp页面,就像Jenkins在执行构建时所做的那样。我不希望用户等到整个命令输出可用(即命令已完成),而是逐步渲染输出(例如,每秒渲染输出的某些行或类似内容)。我使用的是Spring/springmvc,但是如果有人提出了一个没有它的解决方案,那也没关系 我的第一个想法是在一个单

我想实现以下目标,但我找不到适当的方法来解决它。我的
webapp
,在某一点上让用户能够按下
按钮
远程执行
命令
(实际执行
maven构建
mvn clean package
)。我想要的是,使用
mvn命令的控制台输出自动更新
jsp
页面,就像Jenkins在执行
构建时所做的那样。我不希望用户等到整个命令输出可用(即命令已完成),而是逐步渲染输出(例如,每秒渲染输出的某些行或类似内容)。我使用的是
Spring/springmvc
,但是如果有人提出了一个没有它的解决方案,那也没关系

我的第一个想法是在一个单独的
线程
命令行
作业
中生成,并将用户的
会话ID
与执行该命令的
线程ID
关联起来,但我不知道从现在开始最好如何进行,或者即使这是一个正确的解决方案

有人做过类似的事情吗?是否有一种标准的方法来实现这样的功能


谢谢

我会设计这样的东西

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

也许,为了便于管理,您也可以在地图中提供更多详细信息,如作业是否正在进行、失败或完成。

thanx供您回答。我刚刚完成了实施,我相信一切进展顺利。我还按照您的建议创建了一个包含各种执行信息的bean,并将其指定为全局映射的值类型。