您的位置:首页 > 运维架构 > Tomcat

tomcat多版本部署与回滚及需要注意的地方

2016-08-03 10:40 183 查看
部署:   

        1.使用name+##+version.war来命名不同版本;

        2.部署到tomcat的webapps目录下;

这样的话旧的会话会依然访问老版本,而新的会话就会访问新版本。这样就会实现程序的热部署,不用重启tomcat,不用备份老版本。待老版本会话全部结束之后就可以删除老版本。当然,留着也不会出现什么问题(建议在下次发布新版本时再删除老版本))。

回滚:

        若觉得新版本不尽如人意,就可以回滚到老版本,很简单,直接删除新版本即可。tomcat会自动切换到老版本上去。

需要注意的地方:

1 、内部缓存应能被快速地写入和清除;

同一个应用程序的不同版本都有独自的类上下文。这就意味着在你应用程序中任何本地缓存都能被看见。如果缓存在本地保存了很长时间,一个版本的应用程序可能被另一个改变的版本识别。
有图片的情况下两个版本的 Web 应用程序使用相同的数据库,都拥有一个本地缓存,以避免数据库碰撞。如果一个版本的 Web 应用程序改变了数据库中的一条记录,而其他却不会看到自己缓存版本的改变,直到该信息的缓存版本被清除。
如果你处理了任何 Web 应用程序中的内存缓存,不使用并行部署,直到你确信缓存不可接受的陈旧信息。
2 、会话是可用的;
Tomcat 的使用它自己的会话管理方式来确定哪些应用程序请求应当由哪个版本的应用程序来处理。 如果你已经自己实现了会话处理方式,或已经转换为通过 Tomcat 来处理,那么并行部署不会生效。
3 、日志文件输出到哪;
您可能特别指定将日志记录写入日志文件的地方。如果不使用应用程序的日志文件名作为全局上下文,你可能会在某种情况下将两个版本的 Web 应用程序都在写入到同一个日志文件。这个问题会让你在输出的日志文件中找不到哪个是你应用程序生成的日志。

4 、磁盘文件和目录能被共享;

J2EE 设计者的意图一直为 Web 应用程序的独立性底层机器和文件系统无关。如果你的应用程序使用数据文件,请花一点时间来考虑一下当两个版本的 Web 应用程序的版本开始读写数据文件时将会发生什么。
特别地,考虑到 Java 的监听器和锁被限制在单一的上下文。这样,如果你保护访问带有某种锁定文件,有两个版本的 Web 应用程序意味着你有两个锁在 JVM 中,有可能允许两个线程访问它。
5 、没有 TCP 套接字监听;
有些应用服务不仅仅是 HTTP 请求。他们有他们自己的 TCP 套接字处理程序来为客户服务。
通过部署多个 Web 应用程序的版本,就会有多个监听。显然,这将无法工作。在给定的端口上,只能有一个监听器可以监听。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat