29

プロセスがいくつかのファイルをアップロードするディレクトリがあり.pdfます。このプロセスは私の手に負えません。

これらのファイルをTomcatを使用してWebサイトから入手できるようにする必要があります。

Webで利用できるディレクトリが/var/lib/tomcat5/webapps/test1あり、その中のファイルをブラウザで確認できます。

.pdfそこで、ファイル のあるディレクトリを指すシンボリックリンクを作成しましたが、/var/lib/tomcat5/webapps/test1/files/そのディレクトリには何も表示されません。

test1ディレクトリのみでシンボリックリンクを有効にするにはどうすればよいですか?どこでもシンボリックリンクを有効にしたくありません.pdf。ファイルを含むディレクトリをWebで利用できるようにするためです。

4

7 に答える 7

53

META-INF/context.xmlを含むを作成するソリューションには、いくつかの問題があります。<Context path="/myapp" allowLinking="true">

最大の問題は、conf/context.xmlが存在する場合、 の がallowLinkingのより<Context>優先されること<Context>ですMETA-INF/context.xml。そして、conf/context.xmlが を明示的に定義していない場合、allowLinkingそれは と言っているのと同じallowLinking="false"です。(コンテキスト優先順位の質問に対する私の回答を参照してください)

アプリでリンクが許可されていることを確認するには、<Context override="true" allowLinking="true" ...>.

もう 1 つの問題は、path="/myapp"が で無視されることMETA-INF/context.xmlです。混乱を避けるために、それを省略するのが最善です。patha<Context>が効果を発揮するのはだけserver.xmlであり、Tomcat の公式ドキュメント<Context>では s を aに入れることを推奨していませんserver.xml

最後に、ファイルの代わりに、myapp/META-INF/context.xmlファイルを使用することをお勧めしconf/Catalina/localhost/myapp.xmlます。この手法は、webapp の中身であるクリーンなコンテンツを維持できることを意味しますMETA-INF。webapp の中身をいじる危険を冒すのは好きではありません。:-)

于 2008-11-27T01:32:32.237 に答える
16

META-INF以下を含む Web アプリのディレクトリに 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/

于 2008-11-24T19:21:44.343 に答える
7

はい、私はそれが古い質問であることを知っていますが、シンボリックリンクの代わりに --bind オプションを指定してマウントを使用する新しい解決策を見つけました。Tomcat は再構成を必要としません:

cd /var/lib/tomcat5/webapps/test1/

mkdir ファイル

mount --bind /path/to/actual/upload/directory/files ファイル

于 2015-06-08T14:50:58.453 に答える
4

Context が存在できる場所は 4 つあります。

  1. tomcatdir/conf/server.xml
  2. tomcatdir/conf/context.xml
  3. tomcatdir/conf/Catalina/localhost/appname.xml
  4. tomcatdir/webapps/アプリ名/META-INF/context.xml

tomcat 8 の場合、allowlinking 属性は Context ではなく Resources タグで指定する必要があります。私の 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 の両方でリソースを定義しました。また、tomcatdir/conf/server.xml のみ allowLinking="true" が設定されていました。

私が見つけたのは、allowLinking を指定しない場合、それを false に設定するのと同じであるということです。そこで、server.xml から Resources タグを削除し、allowLinking="true" 属性を含む tomcatdir/conf/context.xml のみを残しました。

于 2017-04-28T06:30:15.153 に答える
1

私はこの別の方法でそれを作りました。この他の構成ファイルを編集します: apache-tomcat-7.0.33/conf/ server.xml Hostタグに追加し ました:

<Context path="/data" docBase="C:\datos" debug="0" reloadable="true" crossContext="false"/>

したがって、次の方法でアクセスできます: http://localhost/data

于 2015-05-21T08:00:09.670 に答える