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のローカルインストールがあります。(上記の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

そして何も起こりません。この URL にアクセスしようとしました:

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 -> run on server] を選択すると、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 を持っている場合は、迅速かつ簡単です。
    b. /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 プロジェクト
    a. プロジェクトに名前を付けます: 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 サーバーにデプロイします (プロジェクト エクスプローラーからサーバー ビューにドラッグ アンド ドロップします)。

  9. サーバーを起動する

  10. あなたは完了です!
    a) に移動localhost:{port}/{Project_Name}/{url_pattern}して、新しい Web サービスを説明する Web ページを表示します。
    b) 例えば。http://localhost:8080/My_Tomcat_Project/hello
    c) ここから、生成された WSDL ファイルにアクセスできます。

于 2012-11-14T13:26:53.943 に答える
0

私は最近同様の問題を抱えていました.1つの助けは、アプリケーションファイルがどこにどこからどこに展開されているかを理解することです. ここに私の発見をまとめました。

私の特定のケースでは、デプロイされているクラス ファイルをコンパイルしただけであることがわかりましたが、WEB-INF/* ファイルはデプロイされていないため、アプリケーションを開始するための web.xml ファイルはありません。すべての tomcat サーバー構成とデプロイメント アセンブリ構成が正しいことを検証した後、サーバーを右クリックし、[クリーン] をクリックすることにしました。これにより、配置ディレクトリのクリーンアップが完了し、再公開されます。

私のワークスペースは、「発行」がすべてを発行していない状態でスタックしており、クリーンアップする必要がありました。プロジェクトを「クリーン」しても配置ディレクトリはクリーンアップされず、悪い状態から抜け出せないことに注意してください。また、"Clean Tomcat Work Directory" は ./work ディレクトリをクリーンアップしますが、アプリケーション ディレクトリもクリーンアップしないことに注意してください。

于 2012-12-31T19:56:35.330 に答える