Tomcat热部署三种方式的详细说明

一、可以通过开发工具导出war包的方式:

1.将war包文件直接放入tomcat的webapps文件下,启动tomcat,然后直接通过localhost:8080/war包名称 进行访问

将war放到磁盘任意位置,复制其绝对路径,如下:

a.在tomcat目录的conf下的server.xml文件 Host 标签下添加如下配置:

然后启动tomcat,访问路径为 本机ip + tomcat端口 +Context标签里的path属性值 即可访问

b.另一种方式就是在conf 目录下的Catalina文件夹下的localhost文件夹下,新建一个xml文件,内容如下:

跟上面的配置差不多,就是Context标签中的path路径可有可无,如果你硬写个path="/demo1"的话,是没有用的,tomcat不明确的告诉你:“我不认得”,这种配置方式的访问方法是 localhost:8080/xml的文件名,它是以文件名作为path的

二、非war包形式

3.说完war包方式,还有种web项目处于开发阶段,如何热部署在tomcat中呢?

a.第一种方式就是跟上面war的方式类似,在server.xml 文件中添加Context标签,当然doBase 的路径要以你项目WeRoot为绝对路径:

这样启动tomcat,根据Context标签中的path路径 就可以访问了 如:locahost:8080/demo1

b.第二种方式和war包的部署方式也类似,就是在conf目录下的Catalina下的localhost 下创建一个xml 文件名,当然xml文件名即为最终的访问path ,

Context中的path,可以忽略,因为,它的访问以xml文件名进行访问的,如:你的xml文件名问 demo.xml,访问地址就是:localhost:8080/demo

c.还有另一种方式,当然这种方式一般不推荐使用;

就是将你的项目WebRoot目录下的文件拷贝,在tomcat的webapps文件夹下创建一个目录,将刚刚复制的文件放在这个目录下,并启动tomcat 访问路径是:locahost:8080/webapps创建的这个目录名,例如我刚刚在webapps下创建的是demo,则访问地址为:localhost:8080/demo

总结:这种非war的部署方式有个缺陷:很多项目引用的第三方包有统一的位置,并不直接放在工程下/WebContent/WEB-INF/lib下。在这种场景,将会导致ClassNotFoundException异常抛出。

改善:

方法 一:

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

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

方法 二:

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

Xml代码

<Context docBase="D:WorkspacejdzJXKHWebRoot" path="/demo1" reloadable="false">                  
   <Loader className="org.apache.catalina.loader.VirtualWebappLoader" 
   searchVirtualFirst="false" virtualClasspath="D:/Workspace/bjdz/JXKH/libs/*.jar"> 
   </Loader>  
</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。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值