8月
31
2011

ZZ 通过Eclipse插件启动Tomcat的问题

问题
目前在通过Eclipse中插件启动Tomcat时遇到了个问题,就是访问http://localhost:9000/时出现HTTP Status 404 The requested resource (/) is not available.错误,但是通过http://localhost:9000/myapp访问项目时却没有问题,系统配置没有问题,而且手动运行%TOMCAT_HOME%\bin中的startup.bat和shutdown.bat都没有问题,能正确访问http://localhost:9000/http://localhost:9000/managerhttp://localhost:9000/admin/index.jsp

开发环境
Eclipse

Version: 3.4.2

Build id: M20090211-1700

Tomcat 6.0.18

Tomcat插件

wtp-sdk-R-3.0.4-20090213193639

org.eclipse.jst.server.tomcat.core_1.1.104.v20081006.jar

org.eclipse.jst.server.tomcat.ui_1.1.101.v20080620.jar

解决方法
通过手动启动Tomcat时,是采用%TOMCAT_HOME%\webapps(包括docs,host-manager,manager,ROOT4个目录)作为默认的webapp目录的,%TOMCAT_HOME%\webapps目录下包括ROOT,对应服务器的根目录“/”,也就是通过http://localhost:9000/访问看到的Tomcat Welcome页面。

如果在Eclipse中通过插件启动Tomcat,则是采用%ECLIPSE_WORKSPACE_HOME%\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps作为webapp目录的,wtpwebapps下没有ROOT webapp或者有时包括一个空的ROOT webapp。在这种情况下,访问http://localhost:9000/就会看到HTTP error 404 或者一个空白页面。如果把%TOMCAT_HOME%\webapps下的docs,host-manager,manager,ROOT目录拷贝到wtpwebapps目录下,此时也是可以通过http://localhost:9000/访问看到的Tomcat Welcome页面。

Eclipse中的Tomcat插件默认是把%ECLIPSE_WORKSPACE_HOME%\.metadata作为Server Location的,因此当通过Eclispe插件启动Tomcat时,服务器中只运行了Eclipse工作空间中已发布到Tomcat上的项目。

双击Server视图中的“Tomcat 6 at localhost”,打开一个Tomcat Server编辑器,有一栏“Server Locations”是配置服务器的位置。注意:如果已经有项目Publish到Server上了(启动应用也会发布项目),Server Locations栏是不可修改的,可以先Remove项目并Clean Server,使Server Locations栏可修改。选择“Use Tomcat installation”,通过Eclispe插件启动Tomcat时,%TOMCAT_HOME%\webapps目录下的所有应用都会被启动。

如果只想运行Eclipse工作空间的应用项目,可以选择“Use workspace metadata”;反之如果希望同时运行其他Eclipse工作空间之外的应用项目,就可以选择“Use Tomcat installation”。

Tomcat6.0.18的配置问题
在解决问题的过程中还遇到另外一个问题,手动启动Tomcat6.0.18时也不能访问http://localhost:9000/host-manager,同样报HTTP Status 404 The requested resource (/) is not available.错误,而Tomcat5.0.25中就不存在这个问题。

原因:Tomcat6.0.18与Tomcat5.0.25的默认配置有一些不同。Tomcat6处于安全性的考虑,默认关闭了目录浏览功能的。否则,要是访问目录下没有默认首页,那么该目录下的文件列表就泄露了。

Tomcat-6.0.18\conf\web.xml配置如下:

    <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>false</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

同样的配置选项在Tomcat-5.0.25\conf\web.xml中配置如下:

    <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>

解决方法就是把Tomcat-6.0.18\conf\web.xml中的false改为true。

参考资料
Tomcat Configuration in Eclipse

http://mail-archives.apache.org/mod_mbox/tomcat-users/200905.mbox/%3CFC156DC480224E7780D82AECD4DB4815@chris%3E

http://blog.csdn.net/xttgx/archive/2009/05/30/4226402.aspx

http://sevenredcity.javaeye.com/blog/194995

相关文章

关于作者:moface

博主

留下评论

博客剩余工作

6,优化前台(YSlow) 2,404页面 3,IE6下兼容性问题很大 1,标签小工具行高有点儿问题 4,微博聚合 5,推广工作 7,CDN(cloudflare

分类

访问统计