2

我基于这个例子创建了一个 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。当我运行服务器(使用上面的网络应用程序)时,我得到:

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)并选择“运行方式 -> 在服务器上运行”,则会在 Eclipse 中打开浏览器:

在此处输入图像描述

项目添加到服务器:

在此处输入图像描述

并在 Eclipse 中运行:

在此处输入图像描述

这是 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>
4

2 回答 2

1
  1. 下载 Tomcat 源代码并构建它。
    一个。按照 BUILDING.txt 中的说明进行操作。如果您已经拥有 JDK 和 Ant(您可能已经拥有),那么这将变得快速而简单。
    湾。将 /output/build 目录移动到某处并重命名它,例如。/home/me/apache-tomcat-7.0.29

  2. 在 Eclipse 中,窗口->显示视图->服务器

  3. 右键单击服务器->新建->服务器


  4. Apache- > Tomcat v7.0 服务器 服务器的主机名:localhost
    b. 服务器名称:随便你(Tomcat 7)
    c.服务器运行环境:Apache Tomcat v7.0
    d. 结束

  5. 可选)双击您的新
    服务器 编辑所需的端口

  6. 现在在 Eclipse 中,右键单击->新建->动态 Web
    项目 为您的项目命名:NO SPACES OR IT WILL NOT WORK (My_Tomcat_Project)
    b. 目标运行时:Apache Tomcat v7.0
    c。Web 模块:Web 模块 3.0
    d. 配置:Apache Tomcat v7.0 的默认配置
    e. 完成
    f。编写您的网络应用程序

  7. 保存项目。

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

  9. 启动服务器

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

于 2012-11-14T13:26:53.943 回答
0

我最近遇到了类似的问题,帮助我的一件事是了解应用程序文件部署到哪里以及从哪里部署。我把我的发现放在了这里

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

我的工作空间不知何故陷入了“发布”没有发布所有内容并且需要清理它的状态。请注意,“清理”项目不会清理部署目录,也不会让我摆脱糟糕的状态。另请注意,“清理 Tomcat 工作目录”会清理 ./work 目录,也不清理应用程序目录。

于 2012-12-31T19:56:35.330 回答