设为首页 收藏本站
查看: 881|回复: 0

[经验分享] 配置tomcat、web app自动reload

[复制链接]

尚未签到

发表于 2015-8-8 09:24:07 | 显示全部楼层 |阅读模式
  配置tomcat、web app自动reload
  
  一个运行中的web app,如果修改了其中的一部分代码,然后更新了class文件或者其它文件,那么在不重新启动tomcat的情况下,如何让tomcat自动载入最新的代码呢?配置方式有几种:
  
  假设web应用名为test,engine名为Catalina,host名为localhost
  1.可以在test/META-INF目录下面放置一个context.xml文件,内容如下:
  
  
  
  2.也可以在conf/Catalina/localhost目录下放置一个test.xml文件,内容如下:
  
  
  
  3.如果想让localhost下的所有web应用都自动reload,那么可以在conf/Catalina/localhost目录下放置一个context.xml.default文件,内容如下:
  
  
  
  4.如果希望tomcat下的所有web应用都自动reload,还有一种方法。方法如下:
  
  随便修改一下test/WEB-INF/web.xml文件,比如加个空行,然后保存,这样tomcat会自动监测到web.xml被修改了,然后就重新加载test应用。这个自动监测的配置属于tomcat的默认配置,配置信息如下:
  
  conf/context.xml文件中
  
  WEB-INF/web.xml
  
  这个文件中的配置适用于所有的web应用,不过这种方法有些局限性,就是WatchedResource中只能指定一个具体的文件,不支持WEB-INF/*等模式匹配,所以无法做到监测整个web应用。
  
  5.还可以修改server.xml文件,在下面配置信息:
  
  
  不过这种方法不建议使用,因为修改server.xml文件需要重启tomcat,而且不便于管理,因为server.xml里面的配置信息比较重要,所以最好把web应用自身的配置信息放在单独的文件中管理比较好。
  
  源文档
  
  
  
  
  
  
  
  修改类不重启tomcat 自动加载项目
  
  可以修改类不用重启Tomcat加载整个项目(手工启动)
  配置reloadable=true(自动重载)
  使用Debug模式,前提是仅限于局部修改。(修改类不用重启--热加载)
  
  Tomcat轻小,而WebLogic、WebSphere对硬件要求比较高,吃内存、耗CUP。JBoss类更改不会重启(传说,我没用过,不知道!)。
  
  在使用Eclipse+Tomcat开发Java项目的时候常常会碰到这样的情况,已修改Java文件Tomcat就会自动重启,接下来就是漫长的等待服务重启完毕。那其实大多数的Java文件修改是没有必要重启服务的,只有一些特定的Java文件,比如说只有重启服务的时候才会调用的Java代码才需要重启服务。
  
  一修改java代码就重新部署(console有明显提示),且会话失效,设置服务器为debug模式(debug on server),否则修改不起作用.
  
  什么时候应该redeploy,什么时候应该重启tomcat。如果项目大,redeploy和重启tomcat的系统开销是很大的,经常要等很长时间。
  
  Tomcat运行时动态重载类, 实现重载功能的测试jsp。当系统中有很多类时,如果开启了Tomcat的reloadable=true,那么每当相关文件改变时,Tomcat会停止 web app并释放内存,然后重新加载web app.这实在是个耗时的工程. 如果能有只重载某几个类的功能,将极大的满足我这个即时调试狂。
  
  1.修改类不重启Tomcat(不用手动重启)
  首先需要设置server.xml中的Context reloadable="true", true自动重载(不是重启!), false手动重载。(如果项目在Tomcat中,应该去Tomcat目录设置。)
  Eclipse EE 设置方式,文件设置:server.xml > reloadable="false" 界面设置:Server > Modules > Edit > webapp > Auto reloading enabled > false
  开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度。可以选择把其他不相关的项目先从webapps移出,这样tomcat加载的项目就少了,相应也就快了。
  
  这里是重点:修改tomcat  conf目录下的server.xml,添加:
  Xml代码  


      注:docBase="",中的内容为项目的WebRoot目录
   然后在把MyEclipse server中 tomcat 的开发模式设置debug模式,ok确定。
   然后启动tomcat,随意修改项目中的一个文件,就会看到Console窗口重新加载项目,ok,搞定...
  (问题:设置debug模式修改代码后会出现“hot code replace failed”错误,不用管,继续就ok,如果不想看见,让错误不提示就ok,原因是debug模式代码正在用,所以replase失败,但其实是成功的!而设置run模式就不报错,同时在修改代码后也是热部署的,刷新页面即可!)

  2.修改类不重启Tomcat有两种方式:热部署、热加载
      热部署:容器状态在运行时重新部署整个项目。这种情况下一般整个内存会清空,重新加载,这种方式可能会造成sessin丢失等情况。tomcat 6确实可以热部署了,而且会话也没丢.
      热加载:最好是在调试过程中使用,免得整个项目加载,Debug模式支持热加载。容器状态在运行时重新加载改变编译后的类。在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。
  
      一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的(Eclipse、MyEclipse8、JBuilder、 IntelliJ IDEA…)。
  
  3.自动编译JSP
  build Automatically
  
  修改Tomcat源代码实现realoadable!不推荐~
  
  来自

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-95335-1-1.html 上篇帖子: MyEclipse远程调试Tomcat 下篇帖子: Tomcat源码分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表