一般情况下,在进行客户程序的更新时,通常是由维护人员手动将更新程序(或整个项目程序),重新copy至客户的服务器上,并重新启动相应的web容器来达到程序更新的目的。不过,这样有一个缺点,就是每次更新时,必须需要维护人员在现场进行。对于,客户离公司远,并且更新又频繁(比如,小修小改)时,这种情况就得不偿失了。所以,能够有一个自动更新的程序,在指定的时间将程序进行更新,并且重新启动相应的web服务器,这样就最好了。
本文通过使用svnkit来进行程序的更新,描述了基本的svn使用,以及一个简单的更新流程。
首先,下载svnkit,如下所示:
<dependency> <groupId>org.tmatesoft.svnkit</groupId> <artifactId>svnkit</artifactId> <version>1.3.4</version> <exclusions> <exclusion> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> </exclusion> <exclusion> <groupId>org.tmatesoft.sqljet</groupId> <artifactId>sqljet</artifactId> </exclusion> </exclusions> </dependency>
其中,不需要下载相引用的jna,也不需要下载相应的sqljet,因为简单的更新用不到上面的两个依赖包。然后,简单的运用相应的api即可。
第一步,我们需要得到相对应工程的版本号(同样使用这个方法判断一个目录是否是svn项目)
/** 取得某个文件或目录的版本 */ public long getVersion() throws SVNException { SVNStatusClient svnStatusClient = clientManager.getStatusClient(); return svnStatusClient.doStatus(file, false).getRevision().getNumber(); }
第二步,我们需要取得当前项目需要更新到的指定版本,这个实现很多。笔者的一个实现方法,就是将当前项目的最新版本存放在公司服务器上的一个静态文本中,通过读取这个文本取得当前项目的最新版本,然后再将项目更新到这个版本。这样避免了,直接更新时,总是更新至最新版本的问题(因为可能最新版本并未正式向用户发布,或者还不便于更新)
第三步,即将项目更新到指定的版本即可:
/** 更新项目至指定版本 */ public void update(long version) throws SVNException { SVNUpdateClient svnUpdateClient = clientManager.getUpdateClient(); svnUpdateClient.doUpdate(file, SVNRevision.create(version), SVNDepth.INFINITY, false, false); }
通过以上几个方法,即可达到程序更新的目的。待更新完毕之后,我们可以重新启动相应的tomcat,以达到重新加载的目的。
转载请标明出处:i flym
本文地址:https://www.iflym.com/index.php/code/use-embeded-tomcat-to-javaee-update-programe.html