zoukankan      html  css  js  c++  java
  • Eclipse的Tomcat热部署,免重启的方法

    转自:https://www.cnblogs.com/beyang/p/4911246.html

    背景与目标:

          最好使用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目录。



     

          2、手动添加项目引用。在Host结点下,添加Context节点。

       

    Xml代码  收藏代码
    1. <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
    2.        <!-- docBase指向工程目录  path即Context名称 -->  
    3.     <Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false">  
    4.     </Context>  
    5.   
    6. </Host>  

    问题:很多项目引用的第三方包有统一的位置,并不直接放在工程下/WebContent/WEB-INF/lib下。在这种场景,将会导致ClassNotFoundException异常抛出。

    再改善:

    方法 一:

           一些无关Classloader的类,主要是作为工具类引用的,可以放在tomcat的shared.loader下。这个可以通过设置catalina.properties目录来实现。

          但是此方法改变原有的类加载设计,可能工程需要做一些特别的改变。不具有普遍适应性。故略。

    方法 二:

          利用Tomcat配置的VirtualWebappLoader机制,告诉tomcat去加载第三方的其他jar文件。配置方法同样在server.xml文件里。在前面加的Context下添加Loader。如下:

      

    Xml代码  收藏代码
    1. <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>  
    2. </Context>  

     注意:上面的配置适用于Tomcat 7.X。在Tomcat 6.0设置virtualClasspath时,需要列举出具体的jar,即不能使用*.jar。

    题外话:可以自定义VirtualWebappLoader,但是在Eclipse方式启动tomcat的情况下,已测的tomcat6.0无效。直接在tomcat/bin/startup.bat下可自定义。初步推断原因是eclipse在catalina.base目录下生成一个org.eclipse.jst.server.tomcat.runtime.60.loader.jar。里面重写了WebappLoader。

  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/sharpest/p/7820616.html
Copyright © 2011-2022 走看看