Tomcat中Context容器配置详解(一)

Context元素代表一个web应用,运行在某个特定的虚拟主机上。如Servlet Specification 2.2或以后版本中描述的那样,每个web应用基于一个Web Application Archive(WAR)文件,或者是一个目录,包含WAR文件解压后的内容。有关Web Application Archive的更多信息,可以参考Servlet Specification和Tomcat 应用程序开发者指南。
通过将请求URI的最长可能前缀与每个Context的context路径进行匹配,Catalina选择相应的web 应用处理HTTP请求。一旦选定,根据web application deployment descriptor 文件中定义的servlet映射,Context会选择一个正确的servlet来处理进来的请求。servlet映射必须定义在该web应用目录层次结构中的/WEB-INF/web.xml中。

你可以在一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。另外,你必须定义一个context路径长度为0的Context,这个Context称为该虚拟主机的缺省web应用,用来处理那些不能匹配任何Context的Context路径的请求。

除了在Host元素中嵌套Context元素以外,你也可以将它们存储在单个文件中(以.xml为后缀),放在$CATALINA_HOME/conf/[enginename]/[hostname]/目录下面。有关这方面的更多信息,参考应用的自动发布。这种方法允许动态重新配置web应用,因为如果修改了conf/server.xml,就必须重新启动Tomcat。

除了明确指定Context元素以外,还有其他几种技术可以自动生成Context元素。参考Automatic Application Deployment 和 User Web Applications

以下的描述使用变量$CATALINA_HOME来指Tomcat 5安装的目录。大多数的相对路径都是以该目录为基准。但是,通过设置CATALINA_BASE目录,可以运行多个Tomcat 5实例,这时你应该使用$CATALINA_BASE来作为目录基准,而不是使用$CATALINA_HOME。

属性
通用属性
所有Context的实现支持如下属性:
backgroundProcessorDelay 这个值代表在context及其子容器(包括所有的wrappers)上调用backgroundProcess方法的延时,以秒为单位。如果延时值非负,子容器不会被调用,也就是说子容器使用自己的处理线程。如果该值为正,会创建一个新的线程。在等待指定的时间以后,该线程在主机及其 子容器上调用backgroundProcess方法。context利用后台处理session过期,监测类的变化用于重新载入。如果没有指定,该属性的缺省值是-1,说明context依赖其所属的Host的后台处理。
className 实现的Java类名。该类必须实现org.apache.catalina.Context接口。如果没有指定,使用标准实现(在下面定义)。
cookies 如果想利用cookies来传递session identifier(需要客户端支持cookies),设为ture。否则为false,这种情况下只能依靠URL Rewriting传递session identifier。


crossContext 如果想在应用内调用ServletContext.getContext()来返回在该虚拟主机上运行的其他web application的request dispatcher,设为true。在安全性很重要的环境中,设为false,使得getContext()总是返回null。缺省值为false。

docBase 该web应用的文档基准目录(Document Base,也称为Context Root),或者是WAR文件的路径。可以使用绝对路径,也可以使用相对于context所属的Host的appBase路径。


override 如果想利用该Context元素中的设置覆盖DefaultContext中相应的设置,设为true。缺省情况下使用DefaultContext中的设置。

privileged 设为true,允许context使用container servlets,比如manager servlet。

path web应用的context路径。catalina将每个URL的起始和context path进行比较,选择合适的web应用处理该请求。特定Host下的context path必须是惟一的。如果context path为空字符串(""),这个context是所属Host的缺省web应用,用来处理不能匹配任何context path的请求。


reloadable 如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib下面的类是否发生变化,在发生变化的时候自动重载web application,设为true。这个特征在开发阶段很有用,但也大大增加了服务器的开销。因此,在发布以后,不推荐使用。但是,你可以使用Manager应用在必要的时候触发应用的重载。
wrapperClass org.apache.catalina.Wrapper实现类的名称,用于该Context管理的servlets。如果没有指定,使用标准的缺省值。

标准实现
Context的标准实现是org.apache.catalina.core.StandardContext.它还支持如下的附加属性:

属性 描述
debug 与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。


swallowOutput 如果该值为true,System.out和System.err的输出被重定向到web应用的logger。如果没有指定,缺省值为false

useNaming 如果希望Catalina为该web应用使能一个JNDI InitialContext对象,设为true。该InitialialContext符合J2EE平台的约定,缺省值为true。

workDir Context提供的临时目录的路径,用于servlet的临时读/写。利用javax.servlet.context.tempdir属性,servlet可以访问该目录。如果没有指定,使用$CATALINA_HOME/work下一个合适的目录。


嵌套组件
下列元素可以嵌套在Context元素中,但每个元素至多只能嵌套一次。

Loader-配置该web应用用来加载servlet和javabean的类加载器。正常情况下,使用缺省的类加载器就足够了;
Logger - 配置用来接收和处理所有日志消息的logger,包括调用ServletContext.log()函数记录的所有消息;
Manager -配置用于创建,销毁,维持HTTP session的session manager.正常情况下,使用缺省的session manager配置就足够了;
Realm - 配置Realm,该Realm的用户数据库以及相关的角色仅用于这个特定的web应用中。如果没有指定,该web应用使用所属的Host或Engine的Realm。
Resources - 配置用于访问与这个web应用相关联的静态资源。正常情况下,使用缺省的resource manager就足够了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Tomcatcontext.xml文件是用来配置Web应用程序上下文的文件。它包含了一些重要的配置信息,如数据库连接、JNDI资源、安全性等。下面是一些常见的配置项: 1. 数据库连接:可以在context.xml配置数据库连接池,以便在应用程序使用。例如: <Context> <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="myuser" password="mypassword" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb"/> </Context> 2. JNDI资源:可以在context.xml配置JNDI资源,以便在应用程序使用。例如: <Context> <Resource name="mail/Session" auth="Container" type="javax.mail.Session" mail.smtp.host="smtp.gmail.com" mail.smtp.port="587" mail.smtp.auth="true" mail.smtp.starttls.enable="true" username="myuser@gmail.com" password="mypassword"/> </Context> 3. 安全性:可以在context.xml配置安全性相关的信息,如SSL证书、安全策略等。例如: <Context> <SSLHostConfig> <Certificate certificateKeystoreFile="/path/to/keystore" certificateKeystorePassword="mypassword"/> </SSLHostConfig> <SecurityConstraint> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </SecurityConstraint> </Context> 总之,context.xml文件是一个非常重要的配置文件,它可以帮助我们配置Web应用程序的各种资源和安全性,使得我们的应用程序更加灵活和安全。 ### 回答2: Tomcat Context.xml 是 web 应用程序配置文件的主要配置文件之一,用于管理 Web 应用程序的上下文。它定义了一个特定 Web 应用程序的环境变量、上下文资源和各种参数设置。 Context.xml 文件通常保存在作为 web 应用程序的根目录下的 META-INF 目录下,并可以包含一系列指定参数和值的元素。下面是一些常见的 context.xml 配置选项和详解: 1. path:定义 Web 应用程序的上下文路径,该路径将被用于在浏览器找到该应用程序。 例如,假设我们在 Tomcat 安装了一个名为“myapp”的 web 应用程序,则该应用程序的 URL 将为:http://localhost:8080/myapp。 2. docBase:定义要部署的 Web 应用程序的文档根目录。 3. reloadable:指定 Tomcat 是否应该在 Web 应用程序代码或配置更改时重新加载应用程序。 4. crossContext:指定是否允许在多个 Web 应用程序之间共享 session。 5. jmxEnabled:使 Tomcat 使用 Java Management Extensions (JMX) API 标准的配置选项。 6. privileged:此选项是可选的,如果设置为 true,则 Tomcat 将使用当前线程的 Java 运行时,而不是使用一个新的线程。 7. resources:定义上下文资源,如数据库连接池和 JMS 队列管理器等。 在 context.xml 文件,还可以使用以下元素: - Environment 元素:定义环境变量,如数据库登录和路径变量。 - Resource 元素:定义要公开的 JNDI 上下文资源(如 datasources、JMS connections 和 JavaMail sessions 等)。 - Manager 元素:指定会话管理器,可以配置会话 ID 超时值和其他相关属性。 - Listener 元素:提供 Web 应用程序生命周期事件,如 ContextServletRequest 和 HttpSession 等。 总之,通过配置 context.xml 文件,我们可以对 Tomcat Web 应用程序进行更细粒度的管理和控制。而上述配置选项的每一个都是非常重要的,具体的配置方案可以根据具体需求进行选择。 ### 回答3: Tomcat是一个开源的Java Servlet容器,用于将Java代码转换为可运行的服务器端Web应用程序。在Tomcatcontext.xml文件用于配置上下文的环境设置和资源参数。本文将详细介绍Tomcat context.xml的配置方法。 1. context.xml文件的位置 (1)对于整个Tomcat实例而言,context.xml文件位于Tomcat的conf目录,即$CATALINA_BASE/conf。 (2)对于特定的Web应用程序而言,context.xml文件位于Web应用程序的META-INF目录下。 2. context.xml文件的结构 context.xml文件的根元素是ContextContext元素有一个docBase属性,用于指定Web应用程序的根目录路径(相对路径或绝对路径)。Context元素可以包含多个元素,比如Parameter、Resource、ResourceLink、Environment等。 3. Parameter元素 Parameter元素用于设置Web应用程序的初始化参数。它有两个属性:name和value。其,name属性代表参数的名称,value属性代表参数的值。 例如,在context.xml文件设置一个名为“dbUrl”的初始化参数: <Parameter name="dbUrl" value="jdbc:mysql://localhost:3306/test"/> 4. Resource元素 Resource元素用于配置Tomcat的资源。例如,数据库连接池、JMS连接和JNDI对象等。Resource元素有多个属性,包括name、auth、type、url、username、password等。这些属性用于指定资源的名称、认证方式、类型、URL和访问权限等信息。 例如,在context.xml文件设置一个名为“jdbc/TestDB”的JDBC数据源: <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" username="root" password="123456" maxTotal="20" maxIdle="10" maxWaitMillis="-1"/> 5. ResourceLink元素 ResourceLink元素用于将Web应用程序定义的资源链接到Tomcat服务器上的资源。<Resource />元素定义了资源的位置,而<ResourceLink />元素定义了如何在Web应用程序引用该资源。ResourceLink元素有两个属性:name和global。其,name属性代表资源的名称,global属性代表是否在整个Tomcat实例共享该资源。 例如,在context.xml文件链接一个名为“jdbc/TestDB”的JDBC数据源: <ResourceLink name="jdbc/TestDB" global="jdbc/TestDB" type="javax.sql.DataSource"/> 6. Environment元素 Environment元素用于设置Web应用程序的环境变量。Environment元素有多个属性,包括name、value、type等。其,name属性代表环境变量的名称,value属性代表环境变量的值,type属性代表环境变量的类型。 例如,在context.xml文件设置一个名为“appVersion”的环境变量: <Environment name="appVersion" value="1.0.0" type="java.lang.String" /> 7. 直接在web.xml文件设置资源参数 除了context.xml文件外,还可以在Web应用程序的web.xml文件直接设置资源参数。这些参数将覆盖context.xml文件配置。在web.xml文件,可以使用<env-entry>和<resource-env-ref>元素分别设置环境变量和资源参数。 例如,在web.xml文件设置一个名为“dbUrl”的环境变量: <env-entry> <env-entry-name>dbUrl</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>jdbc:mysql://localhost:3306/test</env-entry-value> </env-entry> 总之,context.xml是Tomcat的一个重要配置文件,可以用于配置Web应用程序的初始化参数、资源、环境变量等信息。熟练掌握context.xml的配置方法,对于管理和运行Tomcat服务器上的Web应用程序非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值