2013-07-29 14 views
1

我正在开发部署项目。我有一个用户界面,我通过RPC回调绑定与服务器的接口。我已经使用SmartGWT进行界面。列出进程如果存在任何进程Java

我的项目只是从一个路径下载war文件,并将其部署到服务器。我还有一个定时器每24小时检查一次更新的版本。 我的问题是,如何防止我的程序同时运行两次? 首先,我虽然关于从界面禁用“执行”按钮,但如果用户刷新页面,或定时器和用户进程同时工作,这不能正常工作。然后我想要使用Singleton Pattern来解决这个问题。假设我的FTP类叫做,ftp.DownloadFile方法将启动一个长时间运行的下载过程。如何确定下载过程或其他过程是否正在运行?我如何列出来自用户的请求,而我已经有一个进程?

回答

1

在下载过程的初始阶段,您需要在服务器端存储一些标志(例如布尔标志,downloadInProgress=true)。然后,在每次页面刷新后,通过RPC调用获取此变量的值,并根据它显示/隐藏UI组件。作为此变量的存储,您可以使用:

  • 数据库
  • 服务器端会话
  • 一切都在服务器端有状态avalibale ...

不要忘了指定false以downloadInProgress变量下载完成后。