4

私はこれで私のロープの終わりにいます。私は非常に単純な webapp を起動しようとしていますが、Tomcat を 404 静的ファイルに変換できないようです。

  • Tomcatバージョン7.0.39でgradle tomcatプラグインを使用しています
  • 私のhtmlファイルはhey-world/src/main/webapp/index.html
  • web.xmlはこのように見えます:

    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
        </servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>HeyWorldApplication</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/static/*</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    

したがって、このセットアップはファイルにマップされると思ってlocalhost:8080/hey-world/static/index.htmlいましたが、毎回 404 です。これは gradle tomcat プラグインの規約に問題がありますか?

4

1 に答える 1

4

web.xml/servlet-mapping で使用される URL パターンは、少し単純化されていることがよくあります。あなたの場合、Resteasy の /* パターンはキャッチオールとして機能するため、他のマッピングは実際には問題にならないと思います。

デバッグのために、Resteasy-servlet を完全に削除し、マッピングを使用してカスタム URL から静的ファイルをサーバーできるかどうかを確認することをお勧めします。それが機能する場合は、別の URL パターン (例: /rest/*) で Resteasy を再度有効にします。

それが機能する場合は、すべてが実際に正常に機能します。/* の URL マッピングが他の機能をブロックしているだけです。

最も簡単な解決策は、おそらくデフォルト (マッピングなし) で静的ファイルをサーバー化し、別の URL から残りのものを提供することです。

または、2 つの Web アプリを使用します。1 つはコンテキスト ルート "/static"、もう 1 つはコンテキスト ルート "/" です。

于 2013-06-06T09:09:32.517 に答える