vlambda博客
学习文章列表

面试官:您知道tomcat部署项目有几种方式吗?

一 直接将web项目文件件拷贝到webapps目录中二 修改Server.xml文件三 新建xml方式

一 直接将web项目文件件拷贝到webapps目录中

我们一般把项目打成war包 然后放在webapp下 然后点击start脚本启动 war包被自动解压出来 然后部署成功

在这里插入图片描述

二 修改Server.xml文件

修改conf目录下的server.xml  在Host标签下添加标签

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">


        <Context path="/xp" docBase="D:/soft/xp" reloadable ="true" debug="0" privileged="true">
        </Context> 

</Host>

path:虚拟路径

docBase:应用程序的物理路径

privileged:如果是true,则tomcat会检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的应用程序,在不重启tomcat的情况下改变应用程序,实现热部署;

debug:0表示提供最少的信息,9表示提供最多的信息

三 新建xml方式

在 D:\soft\tomcat6.0\apache-tomcat-6.0.14\conf\Catalina\localhost 目录下新建xp.xml

xml文件内容

 <Context path="/xp" docBase="D:/soft/xp" reloadable ="true" debug="0" privileged="true"> 
 </Context> 

浏览器访问:localhost:8080/xml文件的名称/访问的文件名称

三种方式最终效果一样的:

面试官:您知道tomcat部署项目有几种方式吗?
在这里插入图片描述

有的同学会说 您会的可真多 您说的这些有依据嘛

上tomcat源码:

HostConfig.java

/**
     * Deploy applications for any directories or WAR files that are found
     * in our "application root" directory.
     */

    protected void deployApps() {

        File appBase = host.getAppBaseFile();
        File configBase = host.getConfigBaseFile();
        String[] filteredAppPaths = filterAppPaths(appBase.list());
        // Deploy XML descriptors from configBase
        deployDescriptors(configBase, configBase.list());
        // Deploy WARs
        deployWARs(appBase, filteredAppPaths);
        // Deploy expanded folders
        deployDirectories(appBase, filteredAppPaths);

    }

点关注不迷路: