4年前 (2021-02-25)  Java系列 |   抢沙发  842 
文章评分 0 次,平均分 0.0

 

了解Tomcat中的配置文件

在深入了解Tomcat服务器中配置文件的含义之前,我们可以访问另一篇关于为javaweb配置Tomcat的文章。

我们开始吧。

启动、停止和重新启动Tomcat

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

下表描述了我们需要知道的bin目录中每个文件的含义。

脚本 目的
catalina catalina是Tomcat的主要脚本。这将运行java命令来调用Tomcat启动和关闭类。
cappend 这在内部使用,然后仅在Windows系统上,用于将项附加到Tomcat类路径环境变量。
digest 这是Tomcat密码的加密摘要。使用它生成加密的密码。
service 服务此脚本将Tomcat作为Windows服务安装和卸载。
setclasspath 这也只在内部使用,设置Tomcat类路径和其他几个环境变量。
shutdown 运行catalina stop和shutdown Tomcat。
startup 这个运行catalina start和启动Tomcat。
tool-wrapper 这是一个通用的Tomcat命令行工具包装器脚本,可用于设置环境变量,然后调用所设置类路径中任何完全限定cla的main方法。这由摘要脚本在内部使用。
version  这个版本运行catalina版本,输出Tomcat的版本信息。

conf目录还包含每个引擎(如Catalina)的子目录,…而Catalina又包含每个主机(如localhost)的子目录默认情况下,…在每个主机中,我们可以放置每个项目的上下文文件,如sample.xml, …

1. catalina.bat 脚本文件

catalina脚本带有一些参数,比如startstoprun

  • 使用start调用时(与调用启动脚本时相同),它启动Tomcat,并将标准输出和标准错误流定向到CATALINA_HOME/logs/catalina.out.
  • 当用run调用时,它会导致Tomcat离开标准输出,错误流意味着它不使用控制台窗口来显示输出和错误。
  • 当使用stop调用时(与调用shutdown脚本时相同),它会使Tomcat连接到在的Server元素中指定的默认端口服务器.xml文件并将其发送到关机消息。
  • 当使用-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目录或Tomcat目录的conf中的所有文件直接配置。

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

文件名 目的
catalina.policy 包含catalina java类的Tomcat安全策略,用JEE规范中定义的标准安全策略语法表示。这是Tomcat的核心安全策略,包括系统代码、web应用程序和Catalina本身的权限定义。
catalina.properties 这个文件是Catalina类的标准Java属性文件。它包含诸如安全包列表和类装入器路径之类的信息。这个文件还可以包含一些字符串缓存设置,我们可以在调整服务器以获得最佳Tomcat性能时编辑这些设置。
logging.properties 此文件配置Catalina的内置日志功能的方式,包括阈值和日志位置等内容。注意,这个日志中的所有条目都引用了JULI,这是Tomcat自动使用的修改后的commons日志实现来代替JDK的日志实现。
context.xml 这个XML配置文件用于定义Tomcat上下文信息,这些信息将为在给定的Tomcat实例上运行的每个web应用程序加载。一般来说,您应该在别处配置上下文信息,但是这个文件中有一些条目可以取消注释,以改变Tomcat处理会话持久性和Comet连接的方式。
server.xml 这是Tomcat的主配置文件,它使用java servlet规范中指定的分层语法来配置Catalina的初始状态,并定义Tomcat引导和构建各种组件的顺序。这个文件相当复杂,但是Apache网站上提供了全面的文档。
tomcat-users.xml 此文件包含有关给定Tomcat服务器上各种用户、密码和用户角色的信息,以及有关可访问此数据的受信任领域(JNDIJDBC等)的信息。
web.xml 此文件配置将应用于加载到给定Tomcat实例中的所有应用程序的选项和值,包括servlet定义(如缓冲区大小、调试级别)、Jasper选项(如classpath、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文件。

安全组件

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

Jar扫描器组件

jar scanner元素表示用于在web应用程序中扫描Jar文件和类文件目录的组件。它通常在web应用程序启动期间用于标识配置文件,如TLDweb-fragment.xml必须作为web应用程序初始化的一部分进行处理的文件。

如果没有包含Jar Scanner元素,那么将自动创建一个默认的Jar Scanner配置,这对于大多数需求来说已经足够了。

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

Jar扫描过滤器元件可以嵌套在Jar扫描器组件中。

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

Jar扫描过滤器的标准实现是org.apache.tomcat.util.scan.StandardJarScanFilter.

我们需要知道的Java扫描过滤器组件的一些属性。

  • pluggabilitySkip:扫描Servlet3.0规范引入的可插入特性时要跳过的JAR文件名模式的逗号分隔列表。如果未指定,则从tomcat.util.scan.StandardJarScanFilter.jarsToSkip系统属性。
  • pluggabilityScan:扫描Servlet3.0规范引入的可插入特性时要扫描的JAR文件名模式的逗号分隔列表。如果未指定,则从tomcat.util.scan.StandardJarScanFilter.jarsToScan系统属性。

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

所以,Jar Scanner用来识别配置文件,比如TLDs,…什么是TLDs文件?标记库描述符是一个XML文档,它包含关于整个库以及库中包含的每个标记的信息。tld由web容器和JSP页面开发工具用来验证标记。通常,TLD文件与JSP文件一起使用。

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

理解context.xml文件

在进入context.xml文件,我们需要理解上下文路径的概念。

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

那么,下面是本文的内容context.xml%CATALINA_HOME%\conf中的文件。

<?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文件中,上下文元素信息将由所有web应用程序加载。

%CATALINA_BASE%/conf/[enginename]/[hostname]/context.xml.default文件文件,则该主机的所有web应用程序都将加载上下文元素信息。

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

那么,我们有:

  • /META-INF/context.xml在应用程序文件中。(根据主机的copyXML属性)也可以将其复制到%CATALINA_BASE%/conf/[enginename]/[hostname]/并重命名为应用程序的基本文件名和.xml扩展名。
  • enginename可以是Catalina或其他…
  • %CATALINA_BASE%/conf/[enginename]/[hostname]/目录中的单个文件(扩展名为.xml)中。上下文路径和版本将从文件的基本名称(文件名减去.xml扩展名)派生。此文件将始终优先于任何context.xml打包在web应用程序的META-INF目录中的文件。
  • 在主配置中的主机元素conf/server.xml.

Wrapping up

Glassfish Java EE服务器是新的参考实现,Glassfish的web容器组件主要基于Tomcat。所有开源Java EE应用服务器实现全部或部分地包括Tomcat。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/1581.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册