2017-01-03 83 views
1

我正在寻找解决方案来自动更新安装在tomcat服务器上的应用程序。自动更新tomcat应用程序

我编码的应用程序应该在公共服务器上有新版本时自行更新。 重要的是说客户端将自己的war文件安装在自己的服务器上。

如何在不要求客户端创建一个由cron任务调用的程序来更新war文件(如果需要)的情况下?

的目标是,所有的客户端使用的应用程序的版本相同。

+0

你有访问客户端的tomcat吗?您可以使用来自中央服务器的tomcat管理工具部署新战争。例如,用一个蚂蚁任务。如果不是,则创建第二个应用程序来检查和部署 – pedrofb

+0

在安全的Tomcat环境中,应用程序无法在本地磁盘的任何位置写入数据。允许应用程序在Tomcat的部署目录中创建或更新文件将是一个非常大的安全漏洞。 –

+0

正在寻找相同的信息,从应用程序本身进行更新,但您建议的crontab对我来说很好。无论如何,在3am tomcat服务重新启动,所以我会添加一个下载和一些脚本来测试版本。一旦准备好并经过测试,我会将其作为答案发布。 –

回答

0

在我看来,你可以有一个守护线程[Java程序将成为应用程序的一部分]运行,以检查从回购的更新版本。一旦可用,线程程序就可以获取最新版本。然后通过覆盖现有的应用程序来安装最新的应用程序。重新加载应用上下文。

1

如果已安装manager应用程序,您可以在应用程序中执行此操作。简单地编写一个定期的过程(例如Quartz,或者用Java编写自己的穷人的cron),以便中央服务器进行更新。

如果您的更新服务器是足够聪明,要做到这一点,你应该能够简单地进行与If-Modified-Since头的HTTP GET要求,所以你要么得到一个304 Not Modified响应,否则你会得到与更新的WAR文件200 OK 。如果你得到一个304,什么都不要做。

如果找到更新,请在将manager应用程序连接到deploy the new version的同时将更新的WAR文件下载到内存中,或将其传输到内存中。