Tomcat的启动脚本浅析(三)

来源:互联网 发布:mac软件下载网站 编辑:程序博客网 时间:2024/05/16 14:26

Tomcat的启动脚本浅析(三)

3. Tomcat启动遇到的常见问题
如果一切顺利,我们就可以看到非常熟悉的Tomcat窗口。但是,由于各种原因,我们可能会碰到一些问题,下面就具体分析一下Tomcat不能正常启动的原因

3.1 环境变量设置问题
如果机器上没有安装JDK或者环境变量JAVA_HOMECATALINA_HOME没有设置正确,Tomcat就不能正常启动。

3.1.1 下面这个错误对话框的意思是Windows不能发现“-Djava.endorsed.dirs=”命令,下面背景的黑窗口的错误是JAVA_HOME环境变量应该指向JDK而不是JRE的根目录(本故意把把JAVA_HOME指向JRE的根目录,所以产生这个错误)。在这种情况下,我们在可以重新设置环境变量JAVA_HOME并指向JDK的安装目录即可。




3.1.2 下面这个错误是因为CATALINA_HOME环境变量设置不正确,从而造成Tomcat不能正常启动。

C:/carl>startup
CATALINA_HOME C:/
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program

3.1.3 下面这个错误是由于错误地设置了Java启动参数xms256M,正确的写法应该是-Xms256M,请注意大小写。大家知道,在Java命令行中,-Xms表示JVM开始启动时所分配的内存大小,而-Xmx表示JVM运行时最大所能占用的的内存大小,如果您的应用程序所需的内存超过Xmx的值,JVM就会抛出Out of Memeory(内存不足)的异常而停止。当然,Xmx的最大值不应超过物理内存的70%

D:/back/blog>start_tomcat_debug.bat
D:/back/blog>set JAVA_OPTS=-xms256M
D:/back/blog>rem 请将JAVA_HOME环境变量修改到您的JDK安装目录
D:/back/blog>set JAVA_HOME=C:/Program Files/Java/jdk1.5.0_09
D:/back/blog>rem 请将CATALINA_HOME环境变量修改到您的Tomcat安装目录
D:/back/blog>set CATALINA_HOME=C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28
D:/back/blog>rem 开始调用catalina.bat文件
D:/back/blog>call C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28/bin/catalina.bat debug
Using CATALINA_BASE:   C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28
Using CATALINA_HOME:   C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28
Using CATALINA_TMPDIR: C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28/temp
Using JAVA_HOME:   C:/Program Files/Java/jdk1.5.0_09
debug
无效的选项: -xms256M

用法:jdb <选项> <> <参数> ...

如果遇到类似问题,可以用下面的方法重新设置一下JVM启动时的内存参数,在startup.bat脚本中加上下面这一行:

set JAVA_OPTS=-Xms256m -Xmx512m

上面这行表示Tomcat初始启动内存至少需要256M,而最大可能占用内存为为512M。有兴趣的读者可以在startup.bat里加上这行参数,启动Tomcat,您会从Windows任务管理器中看到您使用的内存迅速飙升。

3.2 Tomcat应用服务器的配置问题及其中部署的某个Web应用问题

3.2.1   Tomcat端口冲突,具体错误如下窗口所示。这表明缺省的8080端口已经被占有,所以Tomcat不能启动,我们可以通过修改Tomcat的配置文件server.xml来重新定义端口号即可启动,或者停止已经使用8080端口的程序。有时我们并没有启动Tomcat,也没有其它应用程序占用8080端口,但是Tomcat还抛出这个错误。这可能是因为上次我们关闭Tomcat时,并没有真正关闭Tomcat。在这种情况下,请从Windows任务管理器中检查一下有无一个java.exe的程序正在运行,如果发现,强行kill java.exe,然后重启试试。




3.2.2   Tomcat配置文件有错误,产生异常。有时我们在修改server.xml文件时,不小心多加或者多删了一个</>标签,可能造成Tomcat不能正常启动。下面的窗口说明了这个问题。




3.2.3   Tomcat中部署的某个Web应用发生异常。这时Tomcat能正常启动,但在Tomcat启动窗口里发现一大堆异常,如data source没有正确定义,程序抛出异常等等都有关系。下面的这个例子是Tomcat自带的balancer web应用程序启动时产生错误。该问题是因为我们错误的修改了balancer.xml文件造成的。




3.2.4
  Web应用程序的jar文件丢失,如JDBC数据库连接文件class12.jar, mysql.jar没有拷贝到WebappWEB-INF/lib目录下就会产生异常。尤其要注意的是在Tomcat5以前的版本中,公共jar文件包通常放在Tomcat安装目录下的common/lib子目录中,但在Tomcat6.0中,这个公共目录改为lib子目录。

3.3 未知错误

3.3.1 有时Tomcat的启动窗口一闪而过,根本就看不出启动过程中发生了什么错误。这中间的原因有好多种,最常见的解决办法就是使用run命令,打开startup.bat文件,找到下面这行:

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

并将它修改为:

call "%EXECUTABLE%" run %CMD_LINE_ARGS%

这样,Tomcat启动时就不会弹出新窗口,我们就可以从容不迫地观察Tomcat的启动错误,并解决问题,请参考上面关于run命令的解释。

3.3.2 另外,阅读Tomcat的启动日志文件也是我们解决问题的重要办法,缺省的Tomcat日志是放在Tomcat安装目录的logs子目录下。例如下面这段日志说明JspServletViewer这个Web应用缺少Map Object的相关jar文件包,从而找不到com/esri/mo2/map/core/Layout这个Java类。

2008-02-23 11:19:30 StandardContext[/JspServletViewer]Exception sending context initialized event to listener instance of class com.esri.svr.cmn.FileRewriterContextListener
java.lang.NoClassDefFoundError: com/esri/mo2/map/core/Layout
at com.esri.svr.cat.ServiceXMLHandler.startElement ServiceXMLHandler.java:47)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)

 原文:http://carllgc.blog.ccidnet.com/blog-htm-itemid-251452-do-showone-type-blog-uid-4092.html

作者:Carl

原创粉丝点击