Tomcat 常见问题
一、Tomcat常见问题
	1.Tomcat web容器出现故障时,我们通过Tomcat自带的logs查看原因,以下错误提示都是源于logs
	2.Connection refused错误:
		  a)	错误提示:[ERROR]Failed to execute goal org.apache.tomcat.maven: tomcat7-maven-plugin: 2.0- SNAPSHOT: deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]	
		  b)	原因:未启动Tomcat服务器
		  c)	解决:先启动Tomcat服务器在run
	
	3.401错误
		  a)	错误提示:[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]
		  b)	原因:权限问题
		  c)	解决:
				    1.在$CATALINA_BASE/conf/tomcat-users.xml中修改
					      <role rolename=”manager”/>
					      <user username=”admin” password=”admin” roles=”manager”/>
				    2.修改pom.xml文件,在<configuration>中
					      <username>admin</username>  
					      <password>admin</password>
	
	4.Tomcat 启动时发生错误
		  a)	错误提示:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program;
		  b)	原因:没有在在tomcat的配置文件.bash_profile中设置环境变量JAVA_HOME
		  c)	解决:配置环境变量
			
		  a)	错误提示: Error occurred during initialization of VM Could not reserve enough space for object heap
		  b)	原因:在tomcat的bin目录下,catalina.sh文件的tomcat内存参数配置过大,超过机器可用内存总数造成
		  c)	解决:修改到适当的值即可,修改的参数为:JAVA_OPTS="-Xms50m -Xmx60m"
		
		  a)	错误提示:启动时报某个目录没有权限,启动失败,或者不能执行某些jsp页	
		  b)	原因:tomcat需要tomcat用户具有一些目录和文件的相应权限, 所有目录应该具有读写执行(浏览)的权限,jsp,class文件应该最少具有读权限, 一些文件需要写权限
		  c)	解决:配置权限
		  d)	以下是已知的需要读写权限的列表:
			    $CATALINA_HOME/logs下所有文件
			    $CATALINA_HOME/work下所有文件
			    $CATALINA_HOME/publish/main/count.txt文件
			    $CATALINA_HOME/publish/chatroom/resource下的所有.xml文件
	
	5.执行startup.sh文件后提示地址已经使用,导致tomcat无法启动
		  a)	错误提示:地址或端口已经在使用,无法启动Tomcat
		  b)	原因:可能是前一次执行./shutdown.sh文件关闭tomcat时没有停止已经启动的Java进程,而这个进程仍然在监听tomcat所使用的端口,或者有另外一个tomcat正在运行,server.xml文件中的监听端口和当前tomcat冲突。
		  c)	解决:使用netstat -tnlp | grep 8080 查看占用8080端口的进程,并干掉
		
	6.Tomcat 运行时错误以及解决
		  a)	错误提示:
			    1. org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Network error IOException: Connection refused: connect)
			    2. Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
			    3. Caused by: java.net.ConnectException: Connection refused: connect			
		  b)	解决:
			    数据库未开情况下运行tomcat出现的问题,把数据库打开就行了
		
		  a)	错误提示:
			    java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
			    at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) 这个问题是最最常见的,第一次整合ssh的时候会发现这个问题,有时候删除掉相关的包还是会冲突
		  b)	解决:
			    1.方法一:把MyEclipse中的Hibernate中的有关ASM的包全部删除,将spring中asm包拷贝进去重启就Ok了,有时候需要删除其他文件
			    2.方法二:Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
		
		  a)	错误提示:javax.servlet.jsp.JspException: Invalid argument looking up property usersVO.account of bean loginForm
		  b)	解决:一般提示这种错误表示VO中的form没有实例化,在reset方法中new一下就Ok了
		
		  a)	错误提示:Exception loading sessions from persistent storage
		  b)	解决:tomcat安装目录\work\Catalina\localhost\{webAppName}\SESSIONS.ser,删除此文件
	
	7.出现404错误是因为你所请求的页面不可用!这是response对象的http响应中的状态行404表示当前请求的页面不可用!200表示测试通过。500表示服务器内部发生错误等!
	
原文:http://www.cnblogs.com/wulaijun/p/5490709.html