在深入了解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脚本带有一些参数,比如start
、stop
或run
…
- 使用
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服务器上各种用户、密码和用户角色的信息,以及有关可访问此数据的受信任领域(JNDI 、JDBC 等)的信息。 |
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应用程序启动期间用于标识配置文件,如TLD
或web-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
暂无评论