Tomcat 服务器server.xml的关键参数配置

 

Tomcat 服务器server.xml的关键参数配置

说明:以下文字均以tomcat5.0.30为例进行。

1,配置tomcat服务器访问端口,只需配置Connector的port端口即可。Tomcat默认为8080,现修改port参数值为80。

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->

<Connector port="80"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" URIEncoding="GBK"/>

2,配置tomcat支持URL中文参数,只需添加Connector的URIEncoding参数即可,默认情况下该参数未被配置。要支持URL参数支持中文,加上URIEncoding="GBK"就行了(见1中附代码最后一行)。

3,配置新的webApp:找到host尾标记</Host>,插入新的context即可。
如:
(1)<Context path="" docBase="ROOT" debug="0"/>
若要支持数据库(以SQL Server为例),则为:
(2)<Context path="/xkb" docBase="F:/XKB6/webApp" debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>

<Resource name="jdbc/SqlServerDB" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/SqlServerDB">

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>

<!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit.-->

<parameter>

<name>maxActive</name>

<value>50</value>

</parameter>

<!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit.-->

<parameter>

<name>maxIdle</name>

<value>20</value>

</parameter>

<!-- Maximum time to wait for a dB connection to become available in ms, in this example 0.5 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. -->

<parameter>

<name>maxWait</name>

<value>500</value>

</parameter>

<!-- msSQL dB username and password for dB connections -->

<parameter>

<name>username</name>

<value>sa</value>

</parameter>

<parameter>

<name>password</name>

<value>wangnewton</value>

</parameter>

<!-- Class name for SQLServer2000 JDBC driver -->

<parameter>

<name>driverClassName</name>

<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

</parameter>

<!-- The JDBC connection url for connecting to your MS SQL Server dB.The autoReconnect=true argument to the url makes sure that the mm.Sql Server JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours.-->

<parameter>

<name>url</name>

<value>jdbc:microsoft:sqlserver://localhost:1433;databaseName=XKBCourse</value>

<!--must use & not use & -->

</parameter>

</ResourceParams>

</Context>

tomcat5.5.x 配置记录。

1.下载:
http://www.eu.apache.org/dist/jakarta/tomcat-5/
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-admin.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-compat.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-deployer.zip
把jakarta-tomcat-5.5.x.zip
和jakarta-tomcat-5.5.x-compat.zip
和jakarta-tomcat-5.5.x-admin.zip
(Tomcat 默认是没有内置admin模块了
Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it. )
都解压到同一个目录下面。比如:D:/jakarta-tomcat-5.5.x/
(如果使用jdk1.4,才需要compat.zip用jdk1.5就可以免了这个。)

2.修改jakarta-tomcat-5.5.x/conf/tomcat-users.xml.
添加管理员账号lizongbo,密码为lizongbopass.
新xml如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="lizongbo" password="lizongbopass" roles="admin,manager"/>
</tomcat-users>

3.修改jakarta-tomcat-5.5.x/conf/server.xml来解决编码问题。
(给Connector 添加URIEncoding参数,参考 http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)
(可以设置成GB18030)
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="200"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"/>

<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/>

4.启用支持gzip压缩.
( http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)
添加下列属性
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"

5.设置虚拟主机。
在jakarta-tomcat-5.5.x/下建立文件夹vhost/www.mydomain.com。
然后修改jakarta-tomcat-5.5.x/conf/server.xml

<Engine defaultHost="localhost" name="Catalina">
<Host appBase="vhost/www.mydomain.com" name="www.mydomain.com">
</Host>
<Host appBase="webapps" name="localhost">
</Host>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>

6.添加数据库驱动,更新mail.jar和actiovation.jar
复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x/common/lib/
还有javamail 1.3.2的mail.jar,jaf-1_0_2的 activation.jar
msSQl 2000 JDBC sp3,msbase.jar,msutil,jar,mssqlserver.jar

7.配置SSL
参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html
D:/j2sdk1.4.2_06/bin>%JAVA_HOME%/bin/keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码: lizongbossl
您的名字与姓氏是什么?
[tomcat5.5.x]: tomcat5.5.x
您的组织单位名称是什么?
[jakarta]: jakarta
您的组织名称是什么?
[apache]: apache
您所在的城市或区域名称是什么?
[hzcity]: hzcity
您所在的州或省份名称是什么?
[gdp]: gdp
该单位的两字母国家代码是什么
[CN]: CN
CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗?
[否]: y

输入<tomcat>的主密码
(如果和 keystore 密码相同,按回车):

(必须密码一致,因此直接回车)
然后再把userhome(例如:C:/Documents and Settings/lizongbo/)下的.keystore复制到
tomcat的conf/目录下。
(例如:D:/jakarta-tomcat-5.5.x/conf/.keystore )
配置jakarta-tomcat-5.5.x/conf/server.xml
加上
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore"
keystorePass="lizongbossl"> <!--与先前设置的密码一致-->
</Connector>
8.禁止文件目录列表,
修改jakarta-tomcat-5.5.x/conf/web.xml,把listing设置为false

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

9.指定了自己的javaEncoding
(参考 http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html )

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>javaEncoding</param-name>
<param-value>GB18030</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
10.添加rar,iso等的mime-type映射
避免在浏览器里直接打开。
<mime-mapping>
<extension>mht</extension>
<mime-type>text/x-mht</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ape</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmvb</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
10.1对html静态页面设置编码
<!-- 修改下面两行以支持静态超文本的自动编码
-->
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
</web-app>

11.添加welcome-file-list,并调整顺序。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

Tomcat中文编码问题解决方案(简)

liyonghai 04/08/30

编码问题的根源可参考 http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml

Tomcat 4.x解决方法:
获取中文:request.setCharacterEncoding("gb2312");
输出中文:<%@ page contentType="text/html;charset=gb2312" %>,必要时需要转码

Tomcat 5.x解决方法:
获取中文:
提交表单时
1)post:request.setCharacterEncoding("gb2312");
2)get:修改server.xml,在Connector中加入URIEncoding="gb2312"
如: <Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="gb2312" />
或者使用useBodyEncodingForURI,使tomcat 5.x兼容tomcat 4.x
输出中文:<%@ page contentType="text/html;charset=gb2312" %>,必要时需要转码

附:Tomcat 5.x与Tomcat 4.x在解析提交表单时发生了变化,Tomcat 4.x无论是post还是get,都使用
相同的编码,而Tomcat 5.x 却把get方法单独了出来.具体可查看tomcat的source code.

get方式的处理比较好,对于post方式建议用配置过滤器的方式来解决,因为这样,配置一个地方整个系统都不用操心了。

简单说明:
web.xml
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/************************/

SetCharacterEncodingFilter.java
--------------------------------------------
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;

/**
* Example filter that sets the character encoding to be used in parsing the
* incoming request
*/
public class SetCharacterEncodingFilter implements Filter {

/**
* Take this filter out of service.
*/
public void destroy() {
}
/**
* select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {

request.setCharacterEncoding("GBK");

// 传递控制到下一个过滤器
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {
}
}
也可以把编码做为参数传递进去。

12.如果你的webapp需要只能够进行https方式访问,那么在webapp的web.xml里加上:
<security-constraint>
<web-resource-collection>
<web-resource-name>must https</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
参考: http://jakarta.apache.org/tomcat/faq/security.html#https
http://marc.theaimsgroup.com/?l=tomcat-user&m=104951559722619&w=2

13.修改远程关闭服务器的命令。
server.xml默认有下面一行:
<Server port="8005" shutdown="SHUTDOWN">
这样允许任何人只要telnet到服务器的8005端口,输入"SHUTDOWN",然后回车,服务器立即就被关掉了。
从安全的角度上考虑,我们需要把这个shutdown指令改成一个别人不容易猜测的字符串。
例如修改如下:
<Server port="8006" shutdown="lizongbo">,这样就只有在telnet到8005,并且输入"lizongbo"才能够关闭Tomcat.
注意:这个修改不影响shutdown.bat的执行。运行shutdown.bat一样可以关闭服务器。
参考: http://jakarta.apache.org/tomcat/faq/security.html#8005

以下皆可以参考: http://www.cnjsp.org/document/user/tuman/valve.html

14.配置http访问日志。Tomcat自带的能够记录的http访问日志已经很详细了
取消下面这段的注释:

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>

然后修改为:
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="combined" resolveHosts="false" fileDateFormat="yyyy-MM-dd.HH"/>

pattern="combined" 记录的日志内容更详细,fileDateFormat="yyyy-MM-dd.HH",会让日志文件按小时进行滚卷,
比默认的按天滚卷要好些,尤其是访问量大的网站,可以考虑写成fileDateFormat="yyyy-MM-dd.HH.mm",就会是每分钟一个日志文件了。
而且可以分别按Engine, Host, or Context,来记录自己的日志
详情参考:
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/valve.html
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/logger.html
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/host.html#Access%20Logs
而且还可以配合awstats来进行日志统计分析: http://www.chedong.com/tech/awstats.html http://blog.csdn.net/lizongbo/archive/2005/02/18/291929.aspx

15.限制ip,限制主机访问等。
如果想禁止指定的ip或者主机名来拒绝某些机器访问,或者指定某些机器来访问。
也支持分别按Engine, Host, or Context,进行以下配置:
<Context path="/examples" ...> ...
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
</Context>
参考:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/context.html

16.发布webapp到网站根目录
1。直接复制到ROOT目录下。
2.因为无法创建无名字的xml文件,并且在xml文件里指定path也是无效的(tomcat靠文件名字来判断的),
因此必须在server.xml里写下面一段:
<Context docBase="${catalina.home}/vhost/www.lizongbo.com" path="/"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Manager className="org.apache.catalina.session.StandardManager" algorithm="SHA-512" sessionIdLength="40">
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_mytest_access_log." suffix=".txt"
pattern="combined" resolveHosts="true" fileDateFormat="yyyy-MM-dd.HH"/>

</Context>
而且必须把ROOT目录删除掉,否则Tomcat还是优先部署ROOT目录为"/"。

17.在重新启动Tomcat的webapp的时候,禁止把session写入文件。
修改conf/web.xml
取消注释:
<!---->
<Manager pathname="" />

18.增强SessiionID的生成算法和长度。

<Manager className="org.apache.catalina.session.StandardManager" algorithm="SHA-512" sessionIdLength="40">
</Manager>

(Tomcat默认算法是MD5,默认长度是16位。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Tomcatserver.xmlTomcat服务器的主要配置文件,它包含了Tomcat服务器的全局配置信息和各个Web应用的配置信息。在server.xml,可以配置Tomcat服务器的监听端口、虚拟主机、连接器、日志、安全等方面的参数。此外,还可以配置Web应用的上下文路径、访问权限、会话管理、JSP引擎等参数server.xmlTomcat服务器的核心配置文件,对于Tomcat服务器的运行和性能有着重要的影响。因此,在配置server.xml时需要仔细考虑各个参数的设置,以确保Tomcat服务器的稳定和高效运行。 ### 回答2: Tomcat是一种常用的开源Web服务应用程序,我们可以通过修改Tomcat配置文件来定制化我们的Web服务。server.xmlTomcat最重要的配置文件之一,用于管理Tomcat的核心组件,包括连接器、Servlet和JSP容器等关键组件。下面我们将介绍server.xml的一些重要配置项及其作用。 1. Server元素 Server元素是server.xml文件的根元素,它定义了Tomcat的全局设置。Server元素主要包含以下子元素: a. Service:用于配置Tomcat的主要服务。 b. Connector:用于配置Tomcat的Web请求的连接器和协议。 c. Engine:将用于处理请求的主要Engine组件。 d. Realm:用于定义Tomcat的身份验证规则。 e. Host:定义了虚拟主机的配置信息。 2. Service元素 Service元素是 Tomcat 的主要组件,它是由 Connector 组件和 Container 组件组成的。具体来说,Tomcat的Service是用于处理来自连接器的请求的主要容器,它包含以下子元素: a. Connector:连接器是Tomcat处理来自客户端请求的一种组件。 b. Engine:Engine是用于处理连接器传递给它的请求的组件。 3. Host元素 Host元素用于定义Tomcat的虚拟主机,虚拟主机意味着多个Web站点可以共享一台服务器,每个站点都有自己的域名或IP地址。Host元素主要包含以下子元素: a. Alias元素:Alias元素提供了虚拟主机的别名,可以用于映射不同的URL到同一虚拟主机。 b. Context元素:Context是TomcatWeb应用程序配置的一个子部分,它用于定义应用程序的上下文路径和配置信息。 c. Valve元素:Tomcat内置了一些可用于记录访问日志或者过滤请求的过滤器,这些过滤器一般称之为Valve。 d. Listener元素:用于监听Tomcat在启动、停止时发生的事件。 以上是一些常见的server.xml配置项,对Tomcat配置文件进行深入理解,可以帮助我们深入了解 Tomcat 的工作原理,并且更加准确地进行Tomcat配置。 ### 回答3: Tomcat 是一款开源的 Web 服务器容器,用于 Java Web 应用的部署和管理。它的配置文件主要是 server.xml,包含了 Tomcat 启动时需要加载的所有配置信息,如虚拟主机、连接器、缓存等。 以下是 server.xml 的常用配置项: 1. Server 元素 Server 元素是 server.xml 文件的根元素,包含了整个 Tomcat 服务器配置信息。可以配置多个 Server 元素,每个元素对应一个 Tomcat 实例。 2. Service 元素 Service 元素是 Server 元素的子元素,是 Tomcat 的核心元素之一。Service 元素包括了各种连接器以及它们需要使用的其他组件。 3. Connector 元素 Connector 元素是连接器,用于处理客户端和服务器之间的网络连接。Tomcat 支持多种连接类型,如 HTTP、HTTPS、AJP 等,每种连接器在 Connector 元素都有对应的配置项。 4. Engine 元素 Engine 元素是 Service 元素的子元素,用于配置 Web 应用的生命周期以及管理多个虚拟主机(Virtual host)。 5. Host 元素 Host 元素是 Engine 元素的子元素,用于配置虚拟主机。每个虚拟主机可以包含多个 Web 应用,通过设置 Host 元素的 name 属性,可以为每个虚拟主机指定唯一的名称。 6. Context 元素 Context 元素用于配置 Web 应用,它是一个 Web 应用的运行环境,包含了 Servlet、JSP、HTML、CSS、JavaScript 等文件。Context 元素必须包含一个唯一的 context path 属性,用于指定 Web 应用的 URL 路径。 7. Valve 元素 Valve 元素用于配置管道阀(Pipeline Valve),控制请求在处理过程的流量,如过滤请求、记录日志等。 以上是 Tomcat 服务器server.xml 配置文件的主要内容。对于每个开发人员来说,深入了解 server.xml 配置项是必要的,以便更好地掌握 Tomcat 服务器,并能够在开发过程更灵活地配置和调整 Tomcat 服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值