写点什么

Java 进阶 (十)tomcat 中 context 配置

  • 2022 年 9 月 09 日
    安徽
  • 本文字数:1863 字

    阅读完需:约 6 分钟

Java进阶(十)tomcat中context配置

tomcat 中<context> docBase 属性是什么意思?

元素属性介绍:

  • path:指定访问该 Web 应用的URL入口。 

  • docBase:指定 Web 应用的文件路径,可以给定绝对路径,也可以给定相对于 appBase 属性的相对路径,如果 Web 应用采用开放目录结构,则指定 Web 应用的根目录,如果 Web 应用是个 war 文件,则指定 war 文件的路径。(指定项目所在地址) 

  • reloadable:如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classesWEB-INF/lib目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。


当我们开发完一个 Web 应用后,我们需要将该应用发布到 Web Server 中,以便其他用户可以访问。在 JAVA 的 WEB 开发领域,我们通常使用 TOMCAT 作为我们的 WEB 服务器进行测试或正式部署。


一般我们将 WEB 应用打包成 WAR 格式,然后拷贝到 TOMCAT 的 WEBAPP 目录下进行发布,在正常情况下,TOMCAT 将自动解压 WAR 文件并生成对应的目录,而且会在内存中动态创建该 WEB 应用对应的 CONTEXT 路径。比如我们的 WAR 文件是 Sample.war,那么解压后的目录就是 Sample 目录,在内存中动态创建的 Context 路径就是/Sample。在开发阶段这样的默认行为是可以接受的,但是在正式部署的情况下,我们通常需要修改应用的 Context 路径以适应我们的需要。


如果我们想让用户仅仅输入域名来访问我们的 Sample 应用,我们就需要修改 Tomcat 的 Context 设置。具体如何设置 Context 路径的方式有两种,一种是修改{TOMCAT_HOME}/conf/server.xml 文件,另一种是建立一个 Context 片段文件放在 webapps 目录下。我们这里介绍第一种方式。


使用任何文本编辑器打开 server.xml 文件,在<Host>节点下增加<Context>节点,并设置 path,docBase,debug 和 reloadable 属性,如下:

<?xml version="1.0" encoding="UTF-8"?>
<Server>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
  <GlobalNamingResources>
    <Environment
      name="simpleValue"
      type="java.lang.Integer"
      value="30"/>
    <Resource
      auth="Container"
      description="User database that can be updated and saved"
      name="UserDatabase"
      type="org.apache.catalina.UserDatabase"
      pathname="conf/tomcat-users.xml"
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
  </GlobalNamingResources>
  <Service
      name="Catalina">
    <Connector
        port="8080"
        redirectPort="8443"
        minSpareThreads="25"
        connectionTimeout="20000"
        maxSpareThreads="75"
        maxThreads="150"
        maxHttpHeaderSize="8192">
    </Connector>
    <Connector
        port="8009"
        redirectPort="8443"
        protocol="AJP/1.3">
    </Connector>
    <Engine
        defaultHost="localhost"
        name="Catalina">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
      <Host
          appBase="webapps"
          name="localhost">
        <Context
            path="/samples">
          <WatchedResource>WEB-INF/web.xml</WatchedResource>
        </Context>
        <Context
            path="/profiler">
          <WatchedResource>WEB-INF/web.xml</WatchedResource>
        </Context>
        <Context
            path="/flex">
          <WatchedResource>WEB-INF/web.xml</WatchedResource>
        </Context>
        <!-- 配置直接通过域名访问/Samples应用 -->
        <Context path="" docBase="/samples" debug="0" reloadable="true">
        </Context>
      </Host>
    </Engine>
  </Service>
</Server>
复制代码


发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Java进阶(十)tomcat中context配置_tomcat_No Silver Bullet_InfoQ写作社区