vlambda博客
学习文章列表

浅析Tomcat 服务器下4个xml配置文件


一、context.xml 文件
Context.xml 是 Tomcat 公用的环境配置, tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。推荐在 $CATALINA_BASEconf/context.xml 中进行独立的配置。 因为 server.xml
是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载,而context.xml 文件则不然。
  
    
    
  
<Context path="/eml" docBase="eml" debug="0" reloadbale="true" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/eml.xml</WatchedResource> 监控资源文件,如果web.xml || eml.xml改变了,则自动重新加载改应用。
<Resource name="jdbc/testSiteds" 表示指定的jndi名称
auth="Container" 表示认证方式,一般为Container
type="javax.sql.DataSource" maxActive="100" 连接池支持的最大连接数
maxIdle="40" 连接池中最多可空闲maxIdle个连接
maxWait="30000" 连接池中连接用完时,新的请求等待时间,毫秒
username="txl" 表示数据库用户名
password="123456" 表示数据库用户的密码
driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER
url="jdbc:mysql://localhost:3306/testSite" /> 表示数据库URL地址
</Context>
context.xml 的三个作用范围:
1. tomcat server 级别:
在$CATALINA_BASE/conf/context.xml 里配置,如果你在这个地方配置、那么这个配置文件将会被 所有的webApp共享 。
2. Host 级别:
在 $CATALINA_BASE/conf/Catalina/${hostName} 里添加 context.xml,继而进行配置,这个配置将会被 这个主机上的所有webapp共享。
3. web app 级别:
在 $CATALINA_BASE/conf/Catalina/${hostName} 里添加 ${webAppName}.xml,继而进行配置。


二、web.xml文件
 Web应用程序描述文件, 都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。
  
    
    
  
<!--
filter 配置Servlet过滤器
filter-name 定义过滤器的名字。当有多个过滤器时,不能同名
filter-class 指定实现这一过滤的类,这个类负责具体的过滤事务
--> <filter>
<filter-name>SampleFilter</filter-name>
<filter-class>mypack.SampleFilter</filter-class>
</filter>


<!--
filter-mapping 设定过滤器负责过滤的URL
filter-name 过滤器名。这里的名字一定要和filter中的过滤器名匹配
url-pattern 指定过滤器负责过滤的URL
--> <filter-mapping>
<filter-name>SampleFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping> <!--
servlet 配置Servlet.
servlet-name 定义Servlet的名字
servlet-class 指定实现这个servlet的类
init-param 定义Servlet的初始化参数和参数值,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数
load-on-startup 指定当Web应用启动时,装载Servlet的次序。
当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet.
当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它
--> <servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>mypack.SampleServlet</servlet-class>
<init-param>
<param-name>initParam1</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>


<!--
配置servlet映射(下面代码为SampleServlet指定的相对URL为"/sample":
servlet-name 指定servlet的名字,这里的名字应该和<Servlet>元素中定义的名字匹配。
url-pattern 指定访问这个servlet的URL。只需给出相对路径。
--> <servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/sample</url-pattern>
</servlet-mapping>


<!--配置session session用来设定HttpSession的生命周期。单位(秒)--> <session-config>
<session-timeout>30</session-timeout>
</session-config>


<!--配置Wel0come0文件清单--> <welcome-file-list>
<welcome-file>login.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>


三、server.xml文件
server.xml是对tomcat的设置,可以设置端口号,添加虚拟机这些的, 是对服务器的设置。
  
    
    
  
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.security.SecurityListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<!-- 全局命名资源,来定义一些外部访问资源,其作用是为所有引擎应用程序所引用的外部资源的定义 --!>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- 定义的一个名叫“UserDatabase”的认证资源,将conf/tomcat-users.xml加载至内存中,在需要认证的时候到内存中进行认证 --> <Service name="Catalina">
<!-- # 定义Service组件,同来关联Connector和Engine,一个Engine可以对应多个Connector,每个Service中只能一个Engine --!>
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<!-- 修改HTTP/1.1的Connector监听端口为80.客户端通过浏览器访问的请求,只能通过HTTP传递给tomcat。还可以设置server与URIEncoding参数 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="test.com">
<!-- 修改当前Engine,默认主机是,www.test.com --> <Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
# Realm组件,定义对当前容器内的应用程序访问的认证,通过外部资源UserDatabase进行认证
<Host name="test.com" appBase="/web" unpackWARs="true" autoDeploy="true">
<!-- 定义一个主机,域名为:test.com,应用程序的目录是/web,设置自动部署,自动解压 --> <Alias>www.test.com</Alias>
<!-- 定义一个别名www.test.com,类似apache的ServerAlias --> <Context path="" docBase="www/" reloadable="true" />
<!-- 定义该应用程序,访问路径"",即访问www.test.com即可访问,网页目录为:相对于appBase下的www/,即/web/www,并且当该应用程序下web.xml或者类等有相关变化时,自动重载当前配置,即不用重启tomcat使部署的新应用程序生效 --> <Context path="/bbs" docBase="/web/bbs" reloadable="true" />
<!-- 定义另外一个独立的应用程序(虚拟主机),访问路径为:www.test.com/bbs,该应用程序网页目录为/web/bbs --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/www/logs" prefix="www_access." suffix=".log" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<!-- 定义一个Valve组件,用来记录tomcat的访问日志,日志存放目录为:/web/www/logs如果定义为相对路径则是相当于$CATALINA_HOME,并非相对于appBase,这个要注意。定义日志文件前缀为www_access.并以.log结尾,pattern定义日志内容格式,具体字段表示可以查看tomcat官方文档 --> </Host>
<Host name="manager.test.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- 定义一个主机名为man.test.com,应用程序目录是$CATALINA_HOME/webapps,自动解压,自动部署 --> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="172.16.100.*" />
<!-- 定义远程地址访问策略,仅允许172.16.100.*网段访问该主机,其他的将被拒绝访问 --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/bbs/logs" prefix="bbs_access." suffix=".log" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<!-- 定义该主机的访问日志 --> </Host>
</Engine>
</Service>
</Server>


四、tomcat-users.xm
主要用于tomcat用户的创建和权限的编辑
  
    
    
  
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="111111" roles="manager-gui,manager-script,manager-jmx,manager-status"/> manager-gui - 允许访问HTML GUI和状态页面 manager-script - 允许访问文本界面和状态页面 manager-jmx - 允许访问JMX代理和状态页面 manager-status - 只允许访问状态页面
精选原创推荐