在做java web开发时,常用的服务器就是tomcat了。如果tomcat不能实现热部署,那么恐怕每次更改文件进行发布就尤其费时了。
热部署定义:在未改变class文件的签名的前提下,文件的修改是不需要进行重新发布的。
class签名:方法名,参数,返回值。
对于servlet,需要关注其编译后的class文件位置,对于jsp亦是。不过不同的是jsp又需要编译为.java文件,亦即servlet。只要class文件和jsp在同一项目下,tomcat就能进行热部署。如此按照这个思想,再对应下面配置的思路,无论使用何种IDE都是可以行得通。
这里介绍使用或未使用maven。
未使用maven。
在未使用maven的情况下,推荐tomcat配置如下图:
Server Locations建议改为tomcat的安装目录,便于查找。Publishing是必然要改为Never publish automticlly。tomcat启动模式也必须以debug模式。然而你发现即使这样,jsp依然无法热部署。
如果既要对jsp也同时实现热部署,需要先改动项目编译的class路径到项目的WebContent下。更改方法:buildpath->config build path->source。更改下面的default output filder到你的WebContent下面classes文件夹(如果没有就建一个吧,这些编译文件不是源码可以不用提交svn)。如果是MyEclipse就是WebRoot,并且已经自动编译到classes文件夹下了,就不需要上一步,从这里讲,MyEclipse还是方便的。然后改动Server下的server.xml,指向项目的绝对路径,记得是项目的下一级的WebContent。
总之,WebContent下一定要有你项目的class文件和jsp文件。这样就实现热部署了。
<Context docBase="web2" path="/web2" reloadable="false" source="org.eclipse.jst.jee.server:web2"/> 改为: <Context docBase="D:\eclipsewor1\web2\WebContent" path="/web2" reloadable="false"/>
maven下实现热部署。
maven实现热部署比较麻烦,比较maven生成的文件太多了,但是还是按照以上思路。
要保证你的WebContent文件(可以理解为根目录文件)里面有你项目的编译后的一切。
1,利用maven建立一个web项目。
2,更改编译文件路径。更改后,把Allow output folders for source folders勾掉再勾上,触发监听以改动上面文件的编译路径。
3,更改server.xml文件的路径。(2,3参考以上两点。)
更改后的server.xml文件
<Context docBase="hah1" path="/hah1" reloadable="false" source="org.eclipse.jst.jee.server:octopus"/></Host>
tomcat配置:
注:maven创建javaweb项目和java项目请参考: