Web应用程序无法在eclipse中启动

时间:2012-11-14 13:22:54

标签: eclipse tomcat7

我已根据此示例创建了一个webapp:

http://code4reference.com/2012/09/hello-world-web-application/

我已使用eclipse 4.2将其转换为动态Web项目。结构是:

MyProject
 -> src
 -> webapp
    -> WEB-INF
      -> appContext
         -> beans.xml
         -> mappings.xml
      -> web.xml

我在eclipse中设置服务器时指定了tomcat 7的本地安装。当我运行服务器(使用上面的Web应用程序)时,我得到:

14-11-2012 14:12:08 org.apache.catalina.core.AprLifecycleListener init
...
14-11-2012 14:12:09 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyProject' did not find a matching property.
14-11-2012 14:12:09 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
14-11-2012 14:12:09 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
14-11-2012 14:12:09 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 563 ms
14-11-2012 14:12:09 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
14-11-2012 14:12:09 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.32
14-11-2012 14:12:09 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
14-11-2012 14:12:09 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
14-11-2012 14:12:09 org.apache.catalina.startup.Catalina start
INFO: Server startup in 680 ms

然后没有任何反应。我试图访问此网址:

http://localhost:8080/HelloWorld/hi

但获取HTTP状态404 - / HelloWorld / hi。是否有任何日志可能会指向我出错的方向?

编辑:我也尝试过遵循本指南:

http://www.eclipse.org/webtools/community/tutorials/BuildJ2EEWebApp/BuildJ2EEWebApp.html

但给出相同的结果 - 没有任何反应。我试图把断点放在一行:

String userAgent =  req.getHeader("user-agent");

在:

public class SnoopServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String userAgent =  req.getHeader("user-agent");

但它永远不会到达那条线。如果我在eclipse中右键单击项目(MyWebApp)并选择“Run as - >在服务器上运行”,则在eclipse中打开一个浏览器:

enter image description here

项目已添加到服务器:

enter image description here

并在eclipse中运行:

enter image description here

这是com.sample.SnoopServlet的内容:

package com.sample;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SnoopServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String userAgent =  req.getHeader("user-agent");
        String clientBrowser =  "Not known!";   
        if( userAgent != null)
            clientBrowser = userAgent;
        req.setAttribute("client.browser",clientBrowser );
        req.getRequestDispatcher("/showBrowser.jsp").forward(req,resp);
    }
}

这是web.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <servlet>
        <servlet-name>Snoop Servlet</servlet-name>
        <servlet-class>com.sample.SnoopServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Snoop Servlet</servlet-name>
        <url-pattern>/snoop/*</url-pattern>
    </servlet-mapping>


    <!-- Don't remove the below section -->
    <welcome-file-list>
        <welcome-file></welcome-file>
    </welcome-file-list>
</web-app>

2 个答案:

答案 0 :(得分:1)

  1. 下载Tomcat Source,并构建它 一个。按照BUILDING.txt中的说明操作。如果您已经拥有JDK和Ant,那么它很快捷 湾将/ output / build目录移动到某处并重命名,例如。 /home/me/apache-tomcat-7.0.29

  2. 在Eclipse中,Window-&gt; Show View-&gt; Servers

  3. 右键单击Servers-&gt; New-&gt; Server

  4. Apache-&gt; Tomcat v7.0服务器
    一个。服务器的主机名:localhost
    湾服务器名称:无论你喜欢什么(Tomcat 7)
    C。服务器运行时环境:Apache Tomcat v7.0
    d。完成

  5. 可选)双击新服务器
    一个。编辑您想要的端口

  6. 现在在Eclipse中,右键单击 - >新建&gt;动态Web项目
    一个。为您的项目命名:没有空间或它不起作用(My_Tomcat_Project)
    湾目标运行时:Apache Tomcat v7.0
    C。 Web模块:Web模块3.0
    d。配置:Apache Tomcat v7.0的默认配置
    即完成
    F。编写您的webapp

  7. 保存项目。

  8. 将其部署到Tomcat服务器(从Project Explorer拖放到Servers视图)

  9. 启动服务器

  10. 你做完了!
    a)导航至localhost:{port}/{Project_Name}/{url_pattern}以查看描述新网络服务的网页 b)例如。 http://localhost:8080/My_Tomcat_Project/hello
    c)从这里您可以访问生成的WSDL文件。

答案 1 :(得分:0)

我最近遇到过类似的问题,有一件事可以帮助我理解应用程序文件在哪里部署到哪里。我把我的发现here放在一起。

在我的特定情况下,我发现我只部署了已编译的类文件,但没有部署我的WEB-INF / *文件,因此没有web.xml文件来启动应用程序。验证完所有tomcat服务器配置和部署程序集配置是否正确后,我发生了这样的事情:右键单击服务器 - &gt; “清洁”。这将完成清理部署目录并重新发布。

我的工作区在某种程度上停留在“发布”不发布所有内容并需要清理它的状态。请注意,“清理”项目不会清除部署目录,也不会让我摆脱糟糕的状态。另请注意,“清除Tomcat工作目录”会清除./work目录,也不会清除应用程序目录。