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,并将其指定为全局映射的值类型。