您的位置:首页 > 运维架构 > Tomcat

tomcat配置文件分析之server.xml

2013-03-09 14:08 615 查看
开篇提醒:Tomcat配置文件中(即server.xml文件)不能出现中文,否则服务是无法启动的。

<!-- Server中的port监听关闭tomcat的请求,shutdown指定向端口发送的命令串 -->
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
debug="0" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
debug="0" />
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer"
value="30" />
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved">
</Resource>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<!--value与Logger差不多prefix和suffix解释一样,className指定value使用的类名如:org.apache.catalina.values.AccessLogValve类可以记录应用程序的访问信息,directory指定log文件存放位置,pattern有两值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common记录更多 -->
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>

<Service name="Catalina">

<!-- Connector中的port创建服务器端的端口号,此端口监听用户端的请求 maxThreads最大可以创建请求的线程数 minSpareThreads服务启动时创建的处理请求的进程数
enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort指定服务器正在处理http请求时收到一个SSL传输请求后重定向的端口号 acceptCount指定当处理请求线程都被使用时,可以放入处理队列的数目,超出将不进行处理
connectionTimeout指定超时的时间数(毫秒) -->
<Connector port="80" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />

<Connector port="8009" enableLookups="false" redirectPort="8443"
debug="0" protocol="AJP/1.3" />

<!--Engine指定缺省的处理请求主机名,需要有一个与host元素的name属性一致 -->
<Engine name="Catalina" defaultHost="localhost" debug="0">
<!--logger中表示日志信息className为指定logger使用的类名此类必须实现org.apache.catalina.Logger接口prefix指定log文件的前缀,suffix指定后缀,timestamp如果为true则log文件名中加入时间 -->
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="catalina_log." suffix=".txt" timestamp="true" />
<!--Realm存放用户名密码及role数据库,className指定Realm使用的类名必须实现org.apache.catalina.Realm接口 -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
debug="0" resourceName="UserDatabase" />
<!--host中name是指定的主机名或ip,appBase应用程序目录,unpackWARs如果为true则会自动解压war文件直接运行否则不解压 -->
<Host name="192.168.4.247" debug="0" appBase="D:/project/hbgs_dddu/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<!--logger中表示日志信息className为指定logger使用的类名此类必须实现org.apache.catalina.Logger接口prefix指定log文件的前缀,suffix指定后缀,timestamp如果为true则log文件名中加入时间 -->
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log.zx" suffix=".txt" timestamp="true" />
<!--Context一个web应用程序通常为war文件,关于war的具体信息见servlet规范,docBase应用程序的路径或者war文件的存放路径,path表示此web程序的url前缀,reloadable如果为true,Tomcat会自动检测应用程序的变化,自动装载新的应用程序,那么改变代码将不用再次重新启动tomcat -->
<Context path="" docBase="D:/project/hbgs_dddu/webapps"
debug="0" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
配置数据源:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/aaa-app"
docBase="D:\\WORK\\AAA\\AAA-BRANCH\\8GBranch\\src\\applications\\aaa-app\\target\\aaa-app"
reloadable="false">

<Resource auth="Container"
url="jdbc:oracle:thin:@localhost:1521:i18n"
driverClassName="oracle.jdbc.driver.OracleDriver"
name="jdbc/IpbDB"
username="aaa8gbranch" password="exigen"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
type="javax.sql.DataSource"
testOnBorrow="true" testOnReturn="true" timeBetweenEvictionRunsMillis="60000" maxActive="20" maxIdle="5" maxWait="5000"
/>
<Manager pathname="" checkInterval="60" maxActiveSessions="-1" maxInactiveInterval="60" debug="0" algorithm="MD5" entropy="12345" distributable="false"/>
</Context>

Context
1. Context:表示一个web应用程序,通常为WAR文件
2. docBase:应用程序的路径或者是WAR文件存放的路径
3. path:表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/aaa-app
4. reloadable:这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib   和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序

Resource
1.name,指定JDNI名称(可以自己随意定义)
2.auth,表示认证方式,一般为Container
3.type,数据源类型,使用标准的javax.sql.DataSource
4.maxActive,连接池最大的数据库连接数
5.maxIdle,最大的空闲连接数
6.logAbandoned,被丢弃的数据库连接是否做记录,以便跟踪
7.username,数据库用户名
8.password,数据库用户的密码
9.driverClassName,JDBC Driver
10.url,数据库的URL地址

Tomcat JNDI Resource Common Process
第一步,在$CATALINA_HOME$/conf/server.xml配置文件中添置相关Resource信息:

Xml代码
<Resource>
... ...
</Resource>

第二步,在$CATALINA_HOME$/conf/web.xml配置文件中引用上面的Resource信息:

Xml代码
<resource-ref>  
  <description>DB Connection</description>  
  <res-ref-name>jdbc/mysql</res-ref-name>  
  <res-type>javax.sql.DataSource</res-type>  
  <res-auth>Container</res-auth>  
</resource-ref>

第三步,在$CATALINA_HOME$/conf/catalina/localhost目录下找到需要进行数据库连接的当前程序的配置信息
譬如:aaa-app.xml,添加如下配置片段:

Java代码
<Context>
... ...
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource">
... ...
</Context>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: