小编典典
您没有指定服务器应用程序的类型-
我将假设您没有在运行Web应用程序(因为部署WAR已经完成了您所谈论的内容,并且您很少需要Web应用程序来执行拉类型如果您正在谈论一个Web应用程序,那么下面的讨论仍然可以适用-
您只需为WAR文件而不是单个文件实施更新检查和乒乓球)。
您可能想看看jnlp-
WebStart基于此(这是一种客户端应用程序部署技术),但是我很确定它可以针对服务器类型应用程序执行更新而定制。无论如何,jnlp在提供可用于下载所需JAR的所需版本的描述符方面做得非常好。
对此有一些一般性的想法(我们在同一个存储桶中有多个应用程序,并且正在考虑自动更新机制):
在启动应用程序之前,请考虑具有bootstrap.jar文件,该文件能够读取jnlp文件并下载所需/更新的jar。
即使在应用程序运行时(至少在Windows上,这也是操作系统最有可能对正在运行的文件进行锁定的操作系统), 都 可以更新JAR文件。如果您使用自定义类加载器,或者随时都有可能加载或卸载一堆JAR,则可能会遇到问题,但是如果您要创建防止这种情况的机制,则应覆盖JAR,然后重新启动该应用足以进行更新。
即使有可能覆盖JAR,您也可能需要考虑使用lib路径的乒乓方法(如果尚未将应用启动器配置为自动读取lib文件夹中的所有jar文件并将其添加到类路径,那么那是您真正想要做的事情)。乒乓球的工作方式如下:
应用程序启动并查看lib-ping \ version.properties和lib-pong \
version.properties并确定哪个较新。假设lib-ping具有更高版本。启动器将搜索lib-ping *
.jar并将这些文件添加到CP中。