我正在寻找解决方案来自动更新安装在tomcat服务器上的应用程序。自动更新tomcat应用程序
我编码的应用程序应该在公共服务器上有新版本时自行更新。 重要的是说客户端将自己的war文件安装在自己的服务器上。
如何在不要求客户端创建一个由cron任务调用的程序来更新war文件(如果需要)的情况下?
的目标是,所有的客户端使用的应用程序的版本相同。
我正在寻找解决方案来自动更新安装在tomcat服务器上的应用程序。自动更新tomcat应用程序
我编码的应用程序应该在公共服务器上有新版本时自行更新。 重要的是说客户端将自己的war文件安装在自己的服务器上。
如何在不要求客户端创建一个由cron任务调用的程序来更新war文件(如果需要)的情况下?
的目标是,所有的客户端使用的应用程序的版本相同。
在我看来,你可以有一个守护线程[Java程序将成为应用程序的一部分]运行,以检查从回购的更新版本。一旦可用,线程程序就可以获取最新版本。然后通过覆盖现有的应用程序来安装最新的应用程序。重新加载应用上下文。
如果已安装manager
应用程序,您可以在应用程序中执行此操作。简单地编写一个定期的过程(例如Quartz,或者用Java编写自己的穷人的cron),以便中央服务器进行更新。
如果您的更新服务器是足够聪明,要做到这一点,你应该能够简单地进行与If-Modified-Since
头的HTTP GET
要求,所以你要么得到一个304 Not Modified
响应,否则你会得到与更新的WAR文件200 OK
。如果你得到一个304,什么都不要做。
如果找到更新,请在将manager
应用程序连接到deploy the new version的同时将更新的WAR文件下载到内存中,或将其传输到内存中。
你有访问客户端的tomcat吗?您可以使用来自中央服务器的tomcat管理工具部署新战争。例如,用一个蚂蚁任务。如果不是,则创建第二个应用程序来检查和部署 – pedrofb
在安全的Tomcat环境中,应用程序无法在本地磁盘的任何位置写入数据。允许应用程序在Tomcat的部署目录中创建或更新文件将是一个非常大的安全漏洞。 –
正在寻找相同的信息,从应用程序本身进行更新,但您建议的crontab对我来说很好。无论如何,在3am tomcat服务重新启动,所以我会添加一个下载和一些脚本来测试版本。一旦准备好并经过测试,我会将其作为答案发布。 –