1

タイトルはかなり自明です。Netbeans (Tomcat 7) でアプリを実行すると、すべて正常に動作します (dir 構造のルート index.jsp ファイルがブラウザーに表示されます)。

ここに画像の説明を入力

アプリを本番サーバーにデプロイすると、正常にデプロイされます。

ここに画像の説明を入力

ただし、本番サーバーのページにアクセスしようとすると、index.jsp ファイルではなく空白のページしか表示されません。

ここに画像の説明を入力

このアプリの web.xml ファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.dendro.mvc.filters.StaticFilesFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- abstract controller to filter static file requests -->
<servlet>
    <servlet-name>Controller</servlet-name>
    <servlet-class>com.dendro.mvc.filters.Controller</servlet-class>
</servlet>
<!-- servlet names -->
<servlet>
    <servlet-name>PropagatedResults</servlet-name>
    <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>PlainResults</servlet-name>
    <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>HomeFilter</servlet-name>
    <servlet-class>com.dendro.query.HomeFilterServlet</servlet-class>
</servlet>

<!-- mappings -->
<servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>/views/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>HomeFilter</servlet-name>
    <url-pattern>/views/</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>PlainResults</servlet-name>
    <url-pattern>/views/query/plain_results</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>PropagatedResults</servlet-name>
    <url-pattern>/views/query/propagated_results</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list> 

そして、私の context.xml ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path=""/>

tomcat ログには、成功したリクエスト (200 ok) のみが表示されます。

192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 -
192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200  -
192.168.5.77 - - [23/Jun/2012:14:00:30 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 -
192.168.5.77 - - [23/Jun/2012:14:00:31 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200  -
4

2 に答える 2

1

次のヒントを試してみてください。エラーの原因を絞り込もうとしました。

  • 指定されたフィルターでフィルタリングしているものであるかどうかを確認します。多分/*マッピングを改良するのに役立ちますか?
  • また、定義した他の URL マッピングのいくつかにアクセスしてみてください。localhost:8080/GraphQuery-1.0-SNAPSHOT/views/
  • URL にアクセスするときに実行したいサーブレットに明示的にマップ/します。JSP ファイルへのマッピングには、web.xmlの 要素の要素index.jspを使用できます。jsp-fileservlet-mapping
于 2012-06-23T14:49:26.017 に答える
0

問題は、web.xml ファイルにあるフィルター クラスであることがわかりました。最初は、Tomcat で提供される静的ファイルを処理するためにそれを入れていましたが、Tomcat を混乱させ、ログにリダイレクトや例外が表示されないようです。Netbeans は、デバッグしているアプリを常に ROOT フォルダーにデプロイするため、Netbeans で動作していました。tomcat 本番サーバーとは異なり、次のようなコンテキスト ディレクトリはありません。

http://localhost:8084/myapp,

myapp はコンテキストです。

web.xml ファイルを変更し、静的ファイルにデフォルトのサーブレットを使用した後、相対マッピングを使い始めました。

変更を考慮して、プロジェクト内のいくつかの URL を変更する必要がありました。運用サーバーでは URL にコンテキストがあるため、CSS の URL を変更して、../static/img/myimage.jpg のような相対パスを使用する必要がありました。

これは、さらに参照するために、現在機能している Web.xml ファイルの新しいバージョンです。

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

    <!--servlet classes-->
    <servlet>
        <servlet-name>PropagatedResults</servlet-name>
        <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>PlainResults</servlet-name>
        <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>Home</servlet-name>
        <servlet-class>com.dendro.query.HomeServlet</servlet-class>
    </servlet>

    <!--serving static files-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpeg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>

    <!--servlets urls-->
    <servlet-mapping>
        <servlet-name>PlainResults</servlet-name>
        <url-pattern>/query/plain_results</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>PropagatedResults</servlet-name>
        <url-pattern>/query/propagated_results</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Home</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
于 2012-06-25T18:03:01.353 に答える