プロセスがいくつかの.pdf
ファイルをアップロードするディレクトリがあります。このプロセスは私の制御の範囲外です。
これらのファイルをTomcatを使用してWebサイトから入手できるようにする必要があります。
Webで利用可能なディレクトリ/var/lib/Tomcat5/webapps/test1
があり、ブラウザでその中のファイルを表示できます。
そのため、.pdf
ファイルがあるディレクトリを指すシンボリックリンクを作成しました:/var/lib/Tomcat5/webapps/test1/files/
、しかしそのディレクトリには何も表示されません。
test1
ディレクトリのみでシンボリックリンクを有効にするにはどうすればよいですか?どこでもシンボリックリンクを有効にしたくないので、.pdf
ファイルのあるディレクトリをWebで利用できます。
META-INF/context.xml
を含む<Context path="/myapp" allowLinking="true">
の作成のソリューションにはいくつかの問題があります
最大の問題は、conf/context.xml
が存在する場合、<Context>
内のallowLinking
が優先されることです。 <Context>
内のMETA-INF/context.xml
。そして、conf/context.xml
内でallowLinking
が明示的に定義されていない場合、allowLinking="false"
と同じです。 (コンテキスト優先質問の my answer を参照してください)
アプリでリンクを許可するには、<Context override="true" allowLinking="true" ...>
と言う必要があります。
もう1つの問題は、path="/myapp"
がMETA-INF/context.xml
で無視されることです。混乱を防ぐため、省略しておくことをお勧めします。 <Context>
内のpath
が影響するのはserver.xml
内のみであり、 Tomcatの公式ドキュメントでは推奨されていません<Context>
sをserver.xml
。
最後に、myapp/META-INF/context.xml
ファイルの代わりに、conf/Catalina/localhost/myapp.xml
ファイルを使用することをお勧めします。この手法は、META-INF
のコンテンツをクリーンに保つことができることを意味します。これは、Webアプリケーションの根本です-私のWebアプリケーションの根本をいじくるリスクを冒したくありません。 :-)
次を含むWebアプリのMETA-INF
ディレクトリにcontext.xmlファイルを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp" allowLinking="true">
</Context>
詳細: http://www.isocra.com/2008/01/following-symbolic-links-in-Tomcat/
コンテキストが存在できる場所は4つあります。
Tomcat 8の場合、allowlinking属性はコンテキストではなくリソースタグで指定する必要があります。私のtomcatdir/conf/context.xmlは次のようになります
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resources allowLinking="true" cachingAllowed="true" cacheMaxSize="100000" />
</Context>
この解決策は、今の私にはうまくいきます。しかし、私はこの解決策に来る前に私がした間違いも共有したいと思います。
Tomcatdir/conf/server.xmlとtomcatdir/conf/context.xmlの両方でリソースを定義しました。また、allowLinking = "true"はtomcatdir/conf/server.xmlでのみ設定されていました。
私が見つけたのは、allowLinkingを指定しない場合、falseに設定することと同じであるということです。そこで、server.xmlからResourcesタグを削除し、allowLinking = "true"属性が含まれているtomcatdir/conf/context.xmlのみを残しました。
私はこの別の方法でそれを作りました。私はこの他の構成ファイルを編集します:Apache-Tomcat-7.0.33/conf /server.xmlInHost追加したタグ:
<Context path="/data" docBase="C:\datos" debug="0" reloadable="true" crossContext="false"/>
したがって、次のようにアクセスできます: http:// localhost/data
Conf/context.xmlに次の行を追加すると、Apache Tomcat 8.5以降でソフトリンクが有効になります
<Resources allowLinking = "true" chingAllowed = "true" cacheMaxSize = "100000">