2

アプリ エンジンのサーブレット マッピングで問題が発生しています。

詳細
web.xml 構成ファイルを使用して、URL パターン「/i」をマップし、WAR パスのルート ディレクトリにある info.html にリダイレクトします。

これをローカルで実行し、url localhost:8888/i にアクセスすると、Web サーバーは info.html サイトに適切にリダイレクトします。しかし、アプリ エンジンにプッシュして www.mysite.com/i にアクセスしようとすると、404エラーが発生します: NOT_FOUND

質問
1. サーバー マッピングがローカルでは機能するのに、リモートでは機能しないのはなぜですか? 2. www.mysite.com/i のような URL パターンを war パスの静的ファイルにマップする別の方法はありますか?

*私はアプリ エンジンを使用していますが、これは web.xml を介してサーブレット マッピングを利用する他の Java サーバーと似ていると思います。また、静的 html ファイルへのマッピングが奇妙に思えるかもしれませんが、現在動的コンテンツをロードしていません。

コード サンプル
以下に、web.xml ファイルの縮小バージョンを参照用に含めました。リダイレクトの方法を分離します。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

    <servlet>
        <servlet-name>Info</servlet-name>
        <jsp-file>info.html</jsp-file>
    </servlet>

    <servlet-mapping>
        <servlet-name>Info</servlet-name>
        <url-pattern>/i</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>
4

2 に答える 2

1

AE はまったく同じではないことに注意してください。

デフォルトでは、App Engine は WAR 内のすべてのファイルを静的ファイルとして使用できるようにします。ただし、JSP と WEB-INF/ 内のファイルは除きます。パスが静的ファイルと一致する URL に対する要求は、そのパスがサーブレットまたはフィルター マッピングと一致する場合でも、ファイルをブラウザーに直接提供します。appengine-web.xml ファイルを使用して、App Engine が静的ファイルとして扱うファイルを構成できます。

https://developers.google.com/appengine/docs/java/gettingstarted/staticfilesから

appengine-web.xml を構成する手順はこちらですhttps://developers.google.com/appengine/docs/java/config/appconfig

私はそれを明示的に宣言しようとします:

<static-files>
    <include path="info.html" />
</static-files>

それがうまくいかない場合は、.html ページを実際には jsp ページに変更するだけです (動的コンテンツはありませんが)。

それでもうまくいかない場合は、サーブレット内から RequestDispatcher を試して html ページを転送してみてくださいhttp://www.jguru.com/faq/view.jsp?EID=1310997を参照してください

ところで、私の経験では、appengine-web.xml が同じであっても、devmode サーバーとデプロイされたサーバーではファイルの解決が異なる場合があります。

于 2012-07-18T08:04:59.597 に答える