给多台机器的Java应用程序写一个自动更新的程序
2011-08-21 06:35
309 查看
问题:现有70几台前置机要逐步安装Java应用程序,现已经在10台机器上已经安装了Java应用程序。如果代码有变动的话,只能通过远程桌面连接到前置机的电脑进行手工操作。这样一天时间都荒废在这种无聊的时间上了。
想法:利用已经搭建的FTP服务器来实现前置机程序自动更新,从而解放自己劳动,也能保证前置机程序的及时更新。
思路:
1、在前置机本地目录下创建测试目录D:/ftp,新建version/version.txt和startup.properties两个文件及文件夹,其中version.txt作为判断程序是否需要升级的主文件,startup.properties是更新完毕后要启动的Java应用程序目录。将更新程序配置到D:/ftp目录下。
2、在FTP服务器上固定程序下载目录ftp://XXX/update/,测试目录如下图:
3、运行前置机本地程序D:/ftp/update/update.bat文件,得到的目录结构如下图:
4、更新程序先从前置机本地文件检查获取version/version.txt文件,如果没有该文件,则先关闭运行的Java程序,并从ftp的update目录下载全部的资料包括version。如果version.txt存在读取的内存中, 从ftp服务器/update/version/version.txt上下载并覆盖到本地version/version.txt文件并读取到Java内存中,将内存中的versin对象进行比较若相同则不更新,否则进行更新。
5、更新完毕,释放相关资源,并启动关闭的Java应用程序。
思路图:
困难:
1、程序运行采用bat文件来启动运行,在进程中所有的Java运行程序都是Java.exe,怎么区分bat启动的Java.exe进程并来关闭?
2、FTP下载上传以及FTP指定目录下所有资源的遍历以前没有用Java写过,怎么实现?
3、程序关闭再次运行启动bat的命令设置,这里好绕人,花了一点时间。
解决:
第一个问题使用了一个本方法来解决的。bat文件启动的java.exe,那复制同一个在J2SE\bin里并重命名成自己指定的名字,修改bat调用自己重命名的java.exe,那样在window进程管理器里就可以看到自己命名的Java.exe,然后使用Runtime类执行cmd命令:taskkill /f /im java(重命名).exe就可以关闭所有启动进程。
第二个问题:在网络搜索一个前辈们写的相关代码,甄选出代码质量比较高的源代码作为自己学习FTP上传下载等相关操作的实例。使用Apache的Commons包的FTPClient API来实现FTP相关操作。
第三个问题:使用Runtime类的exec(String command)方法来执行 cmd.exe /c start /min +directory+xx.bat 命令,报出异常,无法正常运行,经过几番周折,了解的该方法的默认路径是启动该类bat文件所在的目录,这样就无法找到执行文件。后来调整目录可以找到的执行文件,但是无法正确启动关闭的程序,这还是由于启动的cmd新窗口的环境遍历不正确造成的。查询API找到exec(String[] cmdarray,String[] envp,File dir)这个方法,在API中描述:在指定环境和工作目录的独立进程中执行指定的命令和变量。这个正是想要用的。经过调整,终于可以正确启动关闭的bat文件了。
总结:
这个功能模块想的比较简单,代码实现也很简单,功能和程序上可能还有BUG。
异常捕捉和日志输出代码不更新了。
源代码:http://download.csdn.net/source/3536310
相关文章推荐
- 给多台机器的Java应用程序写一个自动更新的程序
- JAVA自动更新程序
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数, 并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同, 例如12121、3
- JAVA自动更新程序
- java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
- 2. 编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、32
- JAVA自动更新程序
- 在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的程序
- JAVA自动更新程序
- 在eclipse上编写好一个Java程序后,怎么自动的导入程序需要的包?
- 懒人部署插件实现智能、可视化更新程序,让用户不用一个文件一个文件的拷贝,有效防止少、漏更新,同时实现自动备份覆盖的文件,便于随时还原
- 一个自动更新自己的程序(z)
- 一个简单的加减乘除自动生成小程序升级版(JAVA)
- Java程序更新文件自动迁移工具(迁移后自启动)
- Java自动更新SVN程序,注意系统默认的忽略文件
- 编写一个Java应用程序,该程序包括3个类:定义一个学生类,Student有姓名,学号,选学的课程列表 ,定义一个课程类:课程名称,课程分数
- Java多区域部署时能自动升级的一个小演示程序
- Linux机器上实现程序自动部署以及更新
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都
- 求一个能够 自动生成小学生数学练习题目 的Java程序。