一、Tomcat的下载:
下载地址:http://tomcat.apache.org/ 下载Tomcat6.0(在左侧的Download下,考虑到稳定性现在企业大部分还在用Tomcat6.0)
(1)这两种直接解压就可以使用,一般下载这一种(解压到你想放的文件夹下,可以直接更改解压后的文件名,文件夹命名最好是英文。)
32-bit Windows zip (pgp, md5)
64-bit Windows zip (pgp, md5)
(2)这个需要安装才能使用,适合纯新手
32-bit/64-bit Windows Service Installer (pgp, md5)
二、Tomcat在MyEclipse中集成:
==> Window-preferences-MyEclipse-Servers-Tomcat-Tomcat 6.x-点击右侧的Browse,选择你的Tomcat安装目录(我的是D:\Java\tomcat6),勾选Enable,在点击Apply
==> 点击Tomcat 6.x下的JDK,在右侧jdk name下点击下拉箭头,选择你安装的jdk版本
==> 在Optional java JVM arguments下的输入框填入 -Xms128m
-Xmx512m -XX:MaxPermSize=256m ,在点击Apply
==> 点击Tomcat
6.x下的Launch,勾选DeBug mode,在点击Apply,点击OK即可
三、Tomcat常见问题与解决办法
1、手动启动tomcat时cmd窗口一闪而过解决方法。
问题现象:在实际开发中一般都是eclipse+tomcat(也许还会用到tomcat的插件),我们只需要在eclipse中单击servers上的按钮就可以成功启动tomcat了,
但是如果想在tomcat的安装目录下 双击startup.bat启动时却一闪而过了。这是为什么呢(tomcat启动失败),马上就带大家看看具体的原因。
下面我先跟大家确认一下问题出现的前提条件(本机版本java:1.6.20,tomcat:6.0.32):
1)在eclipse里面启动tomcat时都是正常的。(效果见下图)
2)在系统中配置了各种环境变量如下:
JAVA_HOME:H:\DevelopTools\Java\jdk1.6.0_20
CATALINA_BASE:H:\DevelopTools\apache-tomcat-6.0.32
CATALINA_HOME:H:\DevelopTools\apache-tomcat-6.0.32
CLASSPATH:.;%JAVA_HOME%;%JAVA_HOME%\jre\lib;
PATH:.;%JAVA_HOME%\bin;%CATALINA_HOME%\bin;
来分析一下:进入tomcat的安装目录(即解压后放置的地方),看到圈出红色的3个bat文件,一般通过startup.bat启动tomcat时流程是:startup->catalina->setclasspath->catalina,如果这3个bat文件里面有一个出现错误的话就是启动失败。为了找到一闪而过的原因得需要我们来看看这3个文件里面到底是什么了
先记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause(暂停等待的意思)
再次执行startup.bat,就会看到图4,当我们按任意的键时cmd窗口又是一闪而过了。但是这已经确定了我们的环境变量都是正确的。
为了更加详细的看到信息,我们再来更改一句:找到call "%EXECUTABLE%" start %CMD_LINE_ARGS% 把里面的start替换为run。
再来看看cmd窗口里面输出错误信息了:
error occurred during initialization of vm
could not reserve enough space for object heap
could not create the java virtual machine
我们大体可以理解为:因为程序请求不到足够的内存就启动不了vm,导致程序退出。 那么我们可以来解决这个问题了:申请足够的内存就可以了
如下操作:在catalina.bat中 找到Execute The Requested Command下面的
set JAVA_OPTS把这一句替换为:set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 再次启动startup.bat
会看到
已经启动成功了(记得把之前修改的内容run、pause还原回去)。
到这里,貌似问题已经解决了,如果遇到其他的问题该怎么解决呢(因为其他的问题也会导致cmd窗口一闪而过)?
我先跟大家简单说一下:
参考文档:
startup.bat主要负责找到catalina.bat文件,并执行catalina.bat。
catalina.bat是tomcat所有脚本中最重要的脚本,完成几乎所有的tomcat操作。如启动,关闭等等,都是由catalina.bat脚本来完成的。
setclasspath.bat是用来设置基础的环境变量的(如JAVA_HOME等)
2、通过startup.bat启动时报错:
严重: Error initializing endpoint
java.lang.Exception: Socket bind failed:
[730048] ?????????×???(Э?é/???????/???)????í??
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:647)
at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:107)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1014)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:680)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
at org.apache.catalina.startup.Catalina.load(Catalina.java:548)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
总结了一下,大致有以下几种解决方案:
1.端口号被占用,更改tomcat端口号;
2.把Tmcat服务属性更改为手动,重新加载Tomcat;
3.重启Myeclipse;
4.打开任务管理器,找到javaw.exe,把这个进程杀掉;
5.开始-运行-输入cmd-netstat -ano-回车-查到8888端口的PID
通过Ctrl+Alt+Delete快捷键打开Windows任务管理器-查看-选择列-勾选PID(进程标识符)(P)-找到8888端口的PID-结束进程
或开始-运行-输入cmd-netstat -ano|find "8888"-tasklist|find "PID "-askkill /pid PID
PS:我当时是现在MyEclipse中启动了一次Tomcat,然后通过startup.bat启动时报了上面的错误。但在任务管理器中没有找到上面的进程,然后我重启了一次计算机就可以运行startup.bat
3、打开MyEclipse 的Tomcat的时候突然出现 Error starting Tomcat 6.x server 错误。
修改方案:运行cmd,netsh winsock reset,这个是重置winsock,可能是那个软件篡改了winsock
但是在修改 cmd的过程中又总是出现 “请求的操作需要提升(作为管理员运行)。”,接着就是具体步骤:在C:\Windows\System32下找到cmd.exe程序,右击“以管理员身份运行” 这样再输入上面的修改命令即可;