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

[经验分享] Eclipse的Tomcat热部署,免重启的方法

[复制链接]

尚未签到

发表于 2017-1-31 08:56:24 | 显示全部楼层 |阅读模式
  背景与目标:
  最好使用MyEclipse部署Web应用,在开发调试时,非常方式。资源文件修改可以自动的同步。修改Java文件,除非改变类的结构定义,也可以实现热部署的效果。
  后来使用Eclipse JEE版本原生的方式(WTP)部署Web应用,在这一方面的便利性大大降低。原因是一旦修改Java类,虽说Tomcat也不需要人自动重启,但实际上,WebContext自动relead,实际还是相当于重启。
  其实,不仅仅是修改Java类,只是放在Eclipse作为source folder的文件修改,都可触发tomcat的reload。
  改善:
  对此,一个改善的思路是:直接将tomcat的Context指向工程目录下的WebRoot/WebContent。这样,就免去了代码同步的问题。
  方法:
  1、修改tomcat的server.xml。
  在Eclipse创建Server,实际已经新建了一组catalina的配置文件,即原tomcat中的conf目录。
  
DSC0000.png
 
  2、手动添加项目引用。在Host结点下,添加Context节点。

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<!-- docBase指向工程目录  path即Context名称 -->
<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false">
</Context>
</Host>
  问题:很多项目引用的第三方包有统一的位置,并不直接放在工程下/WebContent/WEB-INF/lib下。在这种场景,将会导致ClassNotFoundException异常抛出。
  再改善:
  方法 一:
  一些无关Classloader的类,主要是作为工具类引用的,可以放在tomcat的shared.loader下。这个可以通过设置catalina.properties目录来实现。
  但是此方法改变原有的类加载设计,可能工程需要做一些特别的改变。不具有普遍适应性。故略。
  方法 二:
  利用Tomcat配置的VirtualWebappLoader机制,告诉tomcat去加载第三方的其他jar文件。配置方法同样在server.xml文件里。在前面加的Context下添加Loader。如下:

<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false"><Loader className="org.apache.catalina.loader.VirtualWebappLoader" searchVirtualFirst="false" virtualClasspath="E:/code/workspace/SimpleLibs/libs/*.jar"></Loader>
</Context>
  注意:上面的配置适用于Tomcat 7.X。在Tomcat 6.0设置[size=1em]virtualClasspath时,需要列举出具体的jar,即不能使用*.jar。
  题外话:可以自定义[size=1em]VirtualWebappLoader,但是在Eclipse方式启动tomcat的情况下,已测的tomcat6.0无效。直接在tomcat/bin/startup.bat下可自定义。初步推断原因是eclipse在catalina.base目录下生成一个org.eclipse.jst.server.tomcat.runtime.60.loader.jar。里面重写了WebappLoader。

运维网声明 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-335562-1-1.html 上篇帖子: (转)关闭 Tomcat 的 TLD 扫描的功能 下篇帖子: TOMCAT中如何自动加载程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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