`
lgcpeter
  • 浏览: 88741 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

j2ee的web应用像CS程序一样自动更新

阅读更多
cs程序的更新一般都有更新程序或补丁程序,但服务器端的J2EE很少有自动更新,大多数都由实施人员上门进行手工的更新(这样能收上门费),但给用户的感觉很不好,所以需要写一个傻瓜式的更新模块,便于不懂J2EE的系统管理员做更新.
更新程序的操作过程设计如下:
1,给系统管理员在后台提供一个开关控制各个系统的使用状态为更新状态,在线的用户强制下线,登录的用户不允许登录。这样保证数据不再有更新。备份数据和应用程序如果更新失败提供恢复策略。
2,然后上传更新包,更新包结构:a,webapps(oa;hr;cc...各个应用)与tomcat结构保持一致 b,update.sql数据库的更新语句 c,update_版本号_补丁号.jsp最后动态执行这个jsp修改配置文件和清理缓存及其它复杂情况
3,更新成功后,要求重启tomcat
4,重启后检查更新效果,然后恢复各个系统的使用状态为正常使用状态
分享到:
评论
19 楼 blareck 2009-10-28  
我觉得自动更新很有必要,客户可以省下一笔很客观的费用,而实际上你可以有更多的时间来做新的产品,或者完善产品!基本上你可以认为是用钱来买到了时间!
18 楼 lgcpeter 2009-10-28  
mntswan 写道
现在的web程序,一次更新的文件一般都比较多。

不管是自己手动替换还是让客户去手动替换都是比较麻烦的,也有替换错误的风险。

所以我们部门现在的解决的不是自动更新的需求,而是针对客户的版本,发布相关的升级包。

开发人员按照指定格式提供升级包。升级包包括升级文件和升级路径,其中升级路径在xml中定义。

实施人员或者客户之要把压缩包放到指定目录,然后在服务器运行升级程序就可以了。


现在的升级程序是基于eclipse开发的客户端程序。



我们更新的过程思路基本是一致的。不同之处在于
mntswan 写道
升级程序是基于eclipse开发的客户端程序

我现在的做法没有客户端程序,就在web应用下执行。就是简单的copy和执行更新sql,然后调用一个jsp执行其它复杂情况。
个人认为:两种方式都可行,各有优缺点。
客户端程序在容器之外:
优点--能很好的控制容器的停止和启动;
缺点--与应用分离,服务器好多没有界面无法运行,客户还需要知道学习更新的操作。
嵌在web容器中作为功能模块:
优点--与应用是整体,并且远程就可以上传更新包无需操作服务器目录。
缺点--在容器内做一些简单的jsp更新还可行,稍微复杂情况必须要求客户手工重启容器。
17 楼 lgcpeter 2009-10-28  
flyeagle 写道
我前段时间做了一个web程序的更新,在本地建立一个更新服务器,更新涉及数据库更新、程序更新,然后在客户端(也就是客户本地的服务器上)添加更新程序,在更新包中加入更新规则,客户端使用定期检测的功能,每天晚上凌晨某个时间,检测更新服务器是否有更新版本,有的话自动下载更新包,然后自动停止本地应用服务(由于涉及文件安全原因,如果文件在使用将无法更新,比如jar包覆盖,所以,只有先停止服务才行),然后依照更新规则进行更新,完了重启服务器。整个过程不需要认为的进行干预,由于涉及跨平台,所以,整个程序都是通过java实现的。

这样前提必须客户本地服务器得联网。
另外,请教一下java如何实现停止服务(包含windows和linux环境)?
16 楼 mntswan 2009-10-27  
现在的web程序,一次更新的文件一般都比较多。

不管是自己手动替换还是让客户去手动替换都是比较麻烦的,也有替换错误的风险。

所以我们部门现在的解决的不是自动更新的需求,而是针对客户的版本,发布相关的升级包。

开发人员按照指定格式提供升级包。升级包包括升级文件和升级路径,其中升级路径在xml中定义。

实施人员或者客户之要把压缩包放到指定目录,然后在服务器运行升级程序就可以了。


现在的升级程序是基于eclipse开发的客户端程序。


15 楼 flyeagle 2009-10-27  
   就算是web程序,自动更新还是非常有必要,比如,一个web程序一旦做成产品,部署在全国很多地方,每个版本都到现场去更新配置,那造价可就大了,所以,做个自动更新时非常有必要的。当然,前面说的不能上网,当然不能自动更新了,也无法做到。这样的只要下个更新包,然后程序中提供一个导入更新包,然后进行更新就行了。
14 楼 whaosoft 2009-10-27  
如果bs想cs那样挺好啊
13 楼 flyeagle 2009-10-27  
我前段时间做了一个web程序的更新,在本地建立一个更新服务器,更新涉及数据库更新、程序更新,然后在客户端(也就是客户本地的服务器上)添加更新程序,在更新包中加入更新规则,客户端使用定期检测的功能,每天晚上凌晨某个时间,检测更新服务器是否有更新版本,有的话自动下载更新包,然后自动停止本地应用服务(由于涉及文件安全原因,如果文件在使用将无法更新,比如jar包覆盖,所以,只有先停止服务才行),然后依照更新规则进行更新,完了重启服务器。整个过程不需要认为的进行干预,由于涉及跨平台,所以,整个程序都是通过java实现的。
12 楼 zhxp791008 2009-10-27  
你这不叫自动更新,还要重启服务器,用户无法使用。这个完全可以远程桌面或tomcat的管理功能远程搞定。
要真正做到动态更新,看下OSGI吧。。。
11 楼 panpanshupian 2009-10-27  
我们现在就是上门服务的,呵呵!有时间就请客户更新!
10 楼 shinkadoki 2009-10-27  
JEE中的自动更新可以做的哦,可以在服务支持中心(我们是设在自己技术机房里面),用户那边的服务器一般不会进行连接到Internet的,在通知客户网管之后,客户方回开通客户那边服务器的连接外网权限,然后由管理员运行一下升级就OK了。

如果客户那边没有限制服务器连接Internet情况下,基本上都是自动来支持中心这边自动更新的,当然……过了服务期之后,还是要上门收费的。
9 楼 smilelhh 2009-10-27  
jasspier 写道
并不是所有上门更新都是收费的,一旦用户量成千上万,就知道自动更新的重要性了。
不如用C++或者delphe写一个服务程序定期检查更新,有更新的时候提示用户,用户确定后程序停止web server开始升级过程。


我就是这么干的,效果还挺好。
我们的客户在局域 网中用,点有50多个,如果不采用自动更新,会死人的。
现在好了,只要拿出一台来做更新服务器,我们每次更新软件,只要更新一台就OK了。

8 楼 lgcpeter 2009-10-27  
moss 写道
用户的东西在自己局域网内,怎么更新?
自动更新不可能的,只能手动去更新。
我们公司的客户计算机都不连接互联网的

是要下载更新包的
7 楼 moss 2009-10-26  
用户的东西在自己局域网内,怎么更新?
自动更新不可能的,只能手动去更新。
我们公司的客户计算机都不连接互联网的
6 楼 lydawen 2009-10-26  
你所谓的自动更新,大部分C/S自动更新都是要么C需要重启,要么S重启,跟你上不上门没什么联系。
如果你要不上门,ftp+telnet吧,绝对的跨平台 --!
5 楼 lgcpeter 2009-10-26  
jasspier 写道
并不是所有上门更新都是收费的,一旦用户量成千上万,就知道自动更新的重要性了。
不如用C++或者delphe写一个服务程序定期检查更新,有更新的时候提示用户,用户确定后程序停止web server开始升级过程。

这样如何实现跨平台呢?
4 楼 jasspier 2009-10-26  
并不是所有上门更新都是收费的,一旦用户量成千上万,就知道自动更新的重要性了。
不如用C++或者delphe写一个服务程序定期检查更新,有更新的时候提示用户,用户确定后程序停止web server开始升级过程。
3 楼 lgcpeter 2009-10-26  
程序的自动更新是非常有必要的。
一方面,用户可以省去上门服务的费用,让用户放心使用;就算收上门费用,有自动更新你的上门开销也会大大减少。
另一方面,有利于项目的产品化和标准化。开发出产品可维护性好才是最重要的。
2 楼 Jacky-Q 2009-10-26  
这个东西,怎么说呢。
“老大,我搞了一个好东西!”
“什么东西?”
“自动更新。以后我们可以少挣很多上门费了!”
“-_-”
1 楼 czllfy 2009-10-26  
跟我最开始的想法一样,但是发现不好处理。

相关推荐

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

    asp.net知识库

    ASP.NET 2.0构建动态导航的Web应用程序(TreeView和Menu ) 体验.net2.0的优雅(3) -- 为您的 SiteMap 添加 控制转发功能 GridView控件使用经验 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! ASP.NET2.0控件...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    java 面试题 总结

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

Global site tag (gtag.js) - Google Analytics