web-dev-qa-db-ja.com

Tomcatは、複数のアプリケーションで共有される静的(css、js)ファイルを直接提供します

私は、すべてのアプリで使用されるjsおよびcssファイルの大部分が含まれるExtJSフレームワークを使用しています。いくつかのWebアプリケーション(異なるwarファイル)間でこれらを共有するつもりです。

このため、ExtJS jscssをWebサーバーから直接提供したいと思います。私の場合は_Tomcat6_で、静的ファイルの提供に使用できます- この役立つリンク

したがって、私はファイルを_/var/lib/Tomcat6/webapps/ROOT/extjs/_の下に置きます。そのディレクトリの直下にある静的ファイルは正しく提供されます。 _/extjs/ext.js_は、_/var/lib/Tomcat6/webapps/ROOT/extjs/ext.js_でファイルを正しく提供します。

ただし、_/extjs/welcome/css/welcome.css_でファイルを提供する_/var/lib/Tomcat6/webapps/ROOT/extjs/welcome/css/welcome.css_などの下位ディレクトリにあるファイルは、_404_を返します。

TL/DR

Tomcatは、最上位ディレクトリでのみ静的ファイルを提供します。階層の深いファイルに対しては、_404_が返されます。

構成ファイルの内容

修正済み-ソリューション

問題は私が条項を置いていたことでした:

_<Context docBase="/path/to/extjs-static-files" path="/extjs"/>
_

tomcatの_server.xml_ _<Engine>_句内。 _<Host>_タグ内に配置すると、機能し始めました。 このドキュメント を読むことは、私が間違っていたことを特定するのに非常に役立ちました。

Tomcatの外部のディレクトリに保存されている静的コンテンツを提供するRESTful Webサービスを実行しています。ディレクトリは、web.xmlのサーブレットパラメータで指定します。同様のことを行い、必要なファイルへの絶対パスを指定するだけで、Tomcatのどこかに、または好きな場所にファイルを配置できます。よろしければ、サンプルコードを投稿できます。もちろん、JavaScriptとCSSを参照する他のすべてのファイルは、それらを使用するWebアプリとは異なるURLディレクトリにあるため、変更する必要があります。たとえば、src = "restAppContextName/serve/youJavaScript.js"の場合、serveはREST Webサービスの@Pathで、以下は@PathParamです。ブラウザでは、/ serveはそれはディレクトリのように扱われるので、あるjsファイルから別のjsファイルへの相対参照は機能するはずです。

1
Thorn