Tomcat8部署方式(未完待续)

来源:互联网 发布:第一网红 知乎 编辑:程序博客网 时间:2024/06/06 03:12

Tomcat8如何部署web应用

1. 利用Tomcat自动部署

方式一(亲测有效)

       放入到Tomcat webapps目录下即(因为在conf文件夹下的server.xml指定了如下内容)

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>

       其中appBase指定了自动部署的目录位置,此时tomcat启动之后会检测这个目录下的文件变化,如果有war包会自动解压并部署模块(热部署),删除war包会自动删除解压后的文件夹并卸载模块,因此发布新版本可以直接利用这个特点,直接用新的war包覆盖旧版本即可自动卸载并部署新版本web应用而不需要重启Tomcat(热部署的魅力吧)

方式二(本人没试过)

       Tomcat好像提供可一个控制台用于管理部署(截图如下)

       访问方式 http://localhost:8080/manager/html

这里写图片描述
       查阅资料说这种方式本质也是在webapps生成了一个ContextPath表单里填写的那个名称的文件夹,然后拷贝WAR or Directory URL表单填写的目录的文件到上一步生成的那个文件夹中,本质是利用了方式一的自动部署原理。

2. 一种可以指定虚拟路径的部署方式

       在 conf\Catalina\localhost 目录下定义一个任意名字(这个名字其实就是将来浏览器访问的虚拟路径)的xml文件例如demo.xml,其内容如下:

<?xml version="1.0" encoding="UTF-8"?><!-- 第一句好像可以省略吧 --><Context docBase="X盘:\XX目录\XXX(.war)" debug="0" privileged="true"></Context>

注意: docBase指定的目录最好不要处于webapps内,自动部署会和这种虚拟目录部署重复,从而导致重复部署,进而web模块将被Tomcat服务器两次装载,如果是web应用含有端口绑定的代码则会产生端口被绑定的bug(血的教训)

        之前根据我的常识推测,我以为这种方式应该不再具备热部署的优势了(后来测试发现只要新增了xml文件仍然能自动部署web应用)Tomcat将会自动将docBase指定的目录或者war文件 "X盘:\XX目录\XXX(.war)" 部署成web应用,部署后的虚拟地址则为
       http://localhost:8080/demo

补充:后来发现这种方式还是能被Tomcat检测到,在不需要重启的情况下直接自动部署。如果是目录则直接部署web模块,如果是war包则会先解压然后复制到webapps目录下,文件夹名称即为xml配置文件名字也就是最后的虚拟路径(删除xml文件即为卸载模块)


原创粉丝点击