专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Tomcat配置文件详解

Tomcat配置文件详解

更新时间:2022-04-25 09:42:27 来源:赢咖4 浏览1803次

启动、停止和重新启动 Tomcat

为了启动、停止和重启 Tomcat,我们需要访问 Tomcat 的bin目录。脚本文件可以用 .sh、Unix 的 shell 脚本文件和 .bat、Windows 的批处理文件来终止。

1.catalina.bat脚本文件

catalina 脚本带有一些参数,例如start、stop或run,...

当使用start调用时(与调用启动脚本时相同),它会启动 Tomcat,并将标准输出和标准错误流定向到文件CATALINA_HOME/logs/catalina.out中。

当使用run调用时,它会导致 Tomcat 离开标准输出,错误流意味着它不使用控制台窗口来显示输出和错误。

当使用stop调用时(与调用关闭脚本时相同),它会导致 Tomcat 连接到server.xml文件的Server元素中指定的默认端口并将其发送到关闭消息。

当使用-security调用时,它可以使用catalina.policy文件。

当使用debug调用时,它以调试模式启动 Tomcat。

2.使用Tomcat时我们需要知道的一些环境变量

  In Tomcat, the running servlets can begin to take up a lot of memory in our Java environment.In order to configure the maximum size of heap memory in Tomcat, we can configure it by using ```JAVA_OPTS```. By default, the heap memory's value was 32MB for JDK 1.3.
  This environment variable will be set by command line.
  ```python
  # Korn and Bourne shell
  export JAVA_OPTS="-Xmx256M"
  # MS-DOS
  set JAVA_OPTS="-Xmx256M"
  # C-shell
  setenv JAVA_OPTS="-Xmx256M"

Catalina 的配置文件

Catalina 是 Tomcat 的一个组件,它实现了 servlet 规范。Catalina 的默认行为可以直接通过 Tomcat%CATALINA_BASE%/conf目录或confTomcat 目录下的所有文件进行配置。

下表描述了conf目录中每个文件的含义。

文件名 目的
catalina.policy 包含 Catalina java 类的 Tomcat 安全策略,以 JEE 规范中定义的标准安全策略语法表示。这是 Tomcat 的核心安全策略,包括系统代码、Web 应用程序和 Catalina 本身的权限定义。
catalina.properties 该文件是 Catalina 类的标准 Java 属性文件。它包含诸如安全包列表和类加载器路径等信息。该文件还可以包含一些字符串缓存设置,我们可以在调整服务器以获得最佳 Tomcat 性能时对其进行编辑。
日志记录属性 该文件配置 Catalina 内置日志记录功能的方式,包括阈值和日志位置等内容。请注意,此日志中的所有条目均指向 JULI,这是 Tomcat 自动使用的修改后的 commons-logging 实现来代替 JDK 的日志记录实现。
上下文.xml 此 XML 配置文件用于定义 Tomcat 上下文信息,这些信息将为运行在给定 Tomcat 实例上的每个 Web 应用程序加载。通常,您应该在别处配置您的上下文信息,但此文件中有一些条目可以取消注释,以改变 Tomcat 处理会话持久性和 Comet 连接的方式。
服务器.xml 这是 Tomcat 的主要配置文件,它使用 Java Servlet 规范中指定的分层语法来配置 Catalina 的初始状态,以及定义 Tomcat 启动和构建其各个组件的顺序。该文件相当复杂,但在 Apache 网站上提供了全面的文档。
tomcat-users.xml 此文件包含有关给定 Tomcat 服务器上的各种用户、密码和用户角色的信息,以及有关可访问此数据的可信领域(JNDI、JDBC 等)的信息。
web.xml 此文件配置将应用于加载到给定 Tomcat 实例中的所有应用程序的选项和值,包括 servlet 定义,如缓冲区大小、调试级别、Jasper 选项(如类路径、MIME 类型)以及没有目录的默认欢迎文件他们自己的“索引”文件。虽然您可以在此文件中从技术上为特定 Web 应用程序配置选项,但这将需要您重新启动整个服务器以传播这些更改,因此不建议这样做。

了解 catalina.properties 文件

要了解 catalina.properties,我们将参考其内容:

package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\
org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
server.loader=
shared.loader=
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
tomcat.util.buf.StringCache.byte.enabled=true
#tomcat.util.buf.StringCache.char.enabled=true
#tomcat.util.buf.StringCache.trainThreshold=500000
#tomcat.util.buf.StringCache.cacheSize=5000

该属性提供了一些重要的类加载器路径、安全包列表和一些可调性能属性。catalina.properties 文件的另一个特点是我们可以在这个文件中设置自定义属性,并在 Tomcat 的server.xml文件中将它们作为变量引用。

安全组件

默认情况下,如果通过将-security参数传递给catalina脚本文件来启用 Tomcat 的安全管理器,则将使用以下属性 - package.access和package.definition。

Jar Scanner 组件

Jar Scanner元素表示用于扫描 Web 应用程序以查找 JAR 文件和类文件目录的组件。它通常在 Web 应用程序启动期间用于识别配置文件,例如 TLD 或 web-fragment.xml 文件,这些文件必须作为 Web 应用程序初始化的一部分进行处理。

如果不包含Jar Scanner元素,则会自动创建默认的 Jar Scanner 配置,这足以满足大多数需求。

Jar Scan Filter元素表示在将来自 Jar Scanner 的结果传递回应用程序之前对其进行过滤的组件。它通常用于跳过已知与某些或所有类型的扫描无关的 JAR 的扫描。

Jar Scan Filter元素可以嵌套在 Jar Scanner 组件中。

  <Context>
  ...
  <JarScanner>
      <JarScanFilter
          pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},
                      my_pluggable_feature.jar"/>
  </JarScanner>
  ...
  </Context>

Jar Scan Filter的标准实现是org.apache.tomcat.util.scan.StandardJarScanFilter.

我们需要了解的 Java Scan Filter 组件的一些属性。

pluggabilitySkip:扫描 Servlet 3.0 规范引入的可插入功能时要跳过的 JAR 文件名模式的逗号分隔列表。如果未指定,则从tomcat.util.scan.StandardJarScanFilter.jarsToSkip系统属性中获取默认值。

pluggabilityScan:扫描 Servlet 3.0 规范引入的可插入功能时要扫描的 JAR 文件名模式的逗号分隔列表。如果未指定,则从tomcat.util.scan.StandardJarScanFilter.jarsToScan系统属性中获取默认值。

从可插入性扫描中排除 JAR 将阻止从 Web 应用程序 JAR(即位于/WEB-INF/lib中的 JAR)加载ServletContainerInitializer ,但不会阻止从容器(Tomcat)加载ServletContainerInitializer 。要防止加载容器提供的ServletContainerInitializer ,请使用Context的containerSciFilter属性。

那么,Jar Scanner 用于识别配置文件,例如 TLD,...... 什么是 TLD 文件?标记库描述符是一个 XML 文档,其中包含有关整个库的信息以及有关库中包含的每个标记的信息。TLD 被 Web 容器用来验证标签和 JSP 页面开发工具。通常,TLD 文件与 JSP 文件一起使用。

然后,如果 Jar Scanner 没有在 jar 文件中找到 TLD 文件,它会抛出一个异常。最后,我们可以跳过这些 JAR 文件以提高启动时间和 JSP 编译时间。

了解 context.xml 文件

在进入 Tomcat 的context.xml文件内容之前,我们需要了解上下文路径的概念。

上下文路径是指相对于服务器地址的位置,代表 Web 应用程序的名称。例如,如果我们的 Web 应用程序放在%CATALINA_HOME%\webapps\myapp目录下,它将通过 URL http://localhost/myapp访问,其上下文路径将是/myapp。

然后,下面是%CATALINA_HOME%\conf中context.xml文件的内容。

<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<Context>
    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
</Context>

在此文件中,WatchedResource属性包含我们项目的web.xml文件路径和%CATALINA_HOME%\conf。

在%CATALINA_BASE%/conf/context.xml文件中,Context 元素信息将被所有 Web 应用程序加载。

在%CATALINA_BASE%/conf/[enginename]/[hostname]/context.xml.default文件中,Context 元素信息将由该主机的所有 Web 应用程序加载。

在全局或默认配置文件中加载 context.xml 文件的内容后,单个 Web 应用程序的配置将覆盖在这些默认值之一中配置的任何内容。

然后,我们有:

在应用程序文件内/META-INF/context.xml的单个文件中。可选地(基于Host的copyXML属性),可以将其复制到%CATALINA_BASE%/conf/[enginename]/[hostname]/并重命名为应用程序的基本文件名加上.xml扩展名。

enginename可以是 Catalina 或其他人,...

在%CATALINA_BASE%/conf/[enginename]/[hostname]/目录中的单个文件(扩展名为.xml )中。上下文路径和版本将从文件的基本名称(文件名减去.xml扩展名)派生。此文件将始终优先于打包在 Web 应用程序的META-INF目录中的任何context.xml文件。

在主conf/server.xml的 Host 元素内。

包起来

Glassfish Java EE 服务器是新的参考实现,Glassfish 的 Web 容器组件在很大程度上基于 Tomcat。所有开源 Java EE 应用服务器实现全部或部分包括 Tomcat。如果大家想了解更多相关知识,不妨来关注一下赢咖4的Tomcat教程,里面还有更丰富的知识等着大家去学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>