原文地址:

如何解决端口冲突导致tomcat无法启动的问题

Tomcat在启动时主要使用下面的3个端口
<
Server 
port
=
"8005" 
shutdown
=
"SHUTDOWN" 
debug
=
"0"
>
<
Connector 
className
=
"org.apache.coyote.tomcat4.CoyoteConnector" 
port
=
"8080" 
minProcessors
=
"5" 
maxProcessors
=
"75"
enableLookups
=
"true"
redirectPort
=
"8443" 
acceptCount
=
"100" 
debug
=
"0" 
connectionTimeout
=
"200000" 
useURIValidationHack
=
"false" 
disableUploadTimeout
=
"true" 
/>
<
Connector 
className
=
"org.apache.coyote.tomcat4.CoyoteConnector" 
port
=
"8009" 
minProcessors
=
"5" 
maxProcessors
=
"75" 
enableLookups
=
"true"
redirectPort
=
"8443" 
acceptCount
=
"10" 
debug
=
"0" 
connectionTimeout
=
"20000" 
useURIValidationHack
=
"false"
protocolHandlerClassName
=
"org.apache.jk.server.JkCoyoteHandler"
/>
端口被占用后的现象:
Ø
         8080端口被占用,tomcat刚开始启动就立即停止;
Ø
         8005端口被占用,tomcat启动后期停止;
Ø
         8009端口被占用,tomcat会自动使用下一个未被占用的端口,无启动问题。
如果想查看端口的使用状态,在win2000下使用命令netstat –na;在winXP/2003下使用命令netstat –nao;把tomcat端口修改为未使用的端口然后再启动。
2、 修改java虚拟机内存
修改tomcat\bin\catalina.bat文件,在JAVA_OPTS变量使用前加入
set JAVA_OPTS=-Xms128m -Xmx256m
其中Xms为最小内存,Xmx为最大内存。
设定的最大内存可用如下命令测试:java -Xmx1048m -version
可以使用如下程序代码实现对内存的监控:
 
 
  1. <%  
  2. Runtime lRuntime = Runtime.getRuntime();  
  3. out.println("Free Memory: "+lRuntime.freeMemory()+"<br>");  
  4. out.println("Max   Memory: "+lRuntime.maxMemory()+"<br>");  
  5. out.println("Total Memory: "+lRuntime.totalMemory()+"<br>");  
  6. %> 
3、 修改tomcat连接数
修改tomcat\conf\server.xml文件中的如下部分
<
Connector 
className
=
"org.apache.coyote.tomcat4.CoyoteConnector"
port
=
"8080" 
minProcessors
=
"5" 
maxProcessors
=
"75"
 enableLookups="true"redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" />
其中minProcessors为最小连接数;maxProcessors为最大连接数;acceptCount为允许最大连接数;connectionTimeout为网络连接超时时间毫秒数。
4、 
禁止列出目录下的文件
修改tomcat\conf\web.xml文件中的如下部分,把true设置为false。
<
init-param
>
<
param-name
>
listings
</
param-name
>
    
<
param-value
>
true
</
param-value
>
</
init-param
>
5、 
设置session失效的时间
修改tomcat\conf\web.xml文件的如下部分,时间单位为分钟。
<
session-config
>
<
session-timeout
>
30
</
session-timeout
>
</
session-config
>
6、 
设置MIME响应类型
如果文件在客户端中的响应程序类型和期望不一致,修改tomcat\conf\web.xml文件中的如下部分。
<
mime-mapping
>
<
extension
>
zip
</
extension
>
<
mime-type
>
application/zip
</
mime-type
>
</
mime-mapping
>
<
mime-mapping
>
<
extension
>
mht
</
extension
>
<
mime-type
>
message/rfc822
</
mime-type
>
</
mime-mapping
>
7、 
设置tomcat的默认访问页面
修改tomcat\conf\web.xml文件中的如下部分。
<
welcome-file-list
>
<
welcome-file
>
login.jsp
</
welcome-file
>
<
welcome-file
>
index.htm
</
welcome-file
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
8、 
设置tomcat管理用户
修改tomcat\conf\tomcat-users.xml。
<
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
=
"admin" 
password
=
"" 
roles
=
"admin,manager"
/>
</
tomcat-users
>
附:
1、 
Tomcat 5.x
Tomcat 4.x
在解析提交表单时发生了变化
,Tomcat 4.x
无论是
post
还是
get,
都使用相同的编码,而
Tomcat 5.x 
却把
get
方法单独了出来,具体可查看
tomcat
source code
2、 
Tomcat 5.x
允许
include
jsp
页面重新定义解码方式(如下示例),而
Tomcat4.x
则不允许。
<%@ 
page 
contentType
=
"text/html; charset=GBK" 
%>