• tomcat部署应用的几种方式


    接着上篇 tomcat配置详解,再来学习下如何在tomcat下部署应用 

    1.部署方式

    第一种,最常用,直接把WAR包或者文件夹直接放到webapps目录下面,这时访问路径就是WAR包或者文件夹的名称。

     如果想要context为空,即以http://localhost:8080/ 形式访问,只要将WAR包重命名为ROOT.WAR或者将文件夹重命名为ROOT

    ps:webapps其实是Host节点appBase属性的值,相对路径是相对于$CATALINA_BASE的,即$CATALINA_BASE/webapps,也可以配置为其他的值,或者一个绝对路径,这样那个目录下的WAR包或者文件夹都会在Tomcat启动时被自动发布

    第二种, 在host节点下增加一个Context节点,一个Host节点可以包含多个Context节点。

    <Context path="/test" docBase="test"/>其中path就是Context,如果要配置根目录,只有设置path=””;docBase就是文件夹名称或者是WAR包名,如果是相对路径,则是相对于它所在Host节点的appBase

    ps:不要将docBase指向webapps下的某个WAR或者文件夹,这样可能会导致应用被多次发布;这种方式发布应用,需要重启Tomcat才能生效

    我修改了默认的server.xml,

    <Host name="localhost"  appBase="myapps"
                unpackWARs="false" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
      <Context path="/test" docBase="assetmgmt"/>
    </Host>

    发现http://127.0.0.1:8080/assetmgmt/或http://127.0.0.1:8080/test/ 都能访问,出现这种情况是由于assetmgmt.war放在了myapps下导致项目被重复部署

    第三种,在confCatalinalocalhost下面添加test.xml,

    <?xml version="1.0" encoding="UTF-8"?>

    <Context path="" docBase="C:UsersduDesktop oapache-tomcat-6.0.43_manageassetmgmt.war" >

    </Context>

    这样就能通过http://127.0.0.1:8080/test/ 访问了

    这种方式其实是在$CATALINA_BASE/conf/{enginename}/{hostname},默认是$CATALINA_BASE/conf/Catalina/localhost下面添加一个{context}.xml,这样就使用这个xml的文件名作为项目path:http://127.0.0.1:8080/{context}/访问,如果{context}有多层,则用#间隔,例如a#b#c.xml,就用http://127.0.0.1:8080/a/b/c/访问

    ps:path不用指定,同样也不能把war包放在{hostname}的{appBase}下,不用重启Tomcat部署就能生效

    第四种,直接登录tomcat 管理控制台:http://localhost:8080/,使用tomcat manager发布

    2.其它部署配置

    1.如果想只启动一个tomcat,使用不同端口提供服务,只要增加Service节点并相应改动相关值,

    <Service name="Catalina1">
      <Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
      <Engine defaultHost="localhost" name="Catalina1">
        <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
          <Context path="/test" docBase="test"/>
        </Host>
      </Engine>
    </Service>

    2.如果一个站点配置多个应用,可以同过增加host虚拟主机的方式实现

    <Host appBase="aaa" autoDeploy="true" name="www.aaa.com" unpackWARs="true"
    xmlNamespaceAware="false" xmlValidation="false">
    <Context path="/test" docBase="test"/>
    </Host>
    
    <Host appBase="bbb" autoDeploy="true" name="www.bbb.com" unpackWARs="true"
    xmlNamespaceAware="false" xmlValidation="false">
    <Context path="/test" docBase="test"/>
    </Host>

    这样www.aaa.com:8080/test的访问实际是访问$CATALINA_BASE/aaa/test的访问,而对www.bbb.com:8080/test的访问实际是对$CATALINA_BASE/bbb/test的访问

    参考文章:

    1.Tomcat6上部署应用配置详解

  • 相关阅读:
    Bootstrap表单验证插件bootstrapValidator使用方法整理
    去掉表格前符号
    消除float浮动的影响
    html 让一行文字居中
    java通过各种类型驱动连接数据库
    命令行查看端口
    You can't specify target table 'table' for update in FROM clause
    mysql 添加字段 修改字段为not null
    Js、Jquery定时执行(一次或者重复多次,取消重复)
    c# datetime与 timeStamp(unix时间戳) 互相转换
  • 原文地址:https://www.cnblogs.com/yhzh/p/5366643.html
Copyright © 2020-2023  润新知