我有一个目录,进程将一些.pdf文件上传到该目录。这个过程是我无法控制的。
.pdf
我需要使用Tomcat在网站上提供这些文件。
我有一个/var/lib/tomcat5/webapps/test1可供网络使用的目录,我可以用浏览器查看其中的文件。
/var/lib/tomcat5/webapps/test1
因此,我创建了一个指向.pdf文件目录的符号链接: /var/lib/tomcat5/webapps/test1/files/,但该目录中看不到任何内容。
/var/lib/tomcat5/webapps/test1/files/
如何test1仅在目录中启用符号链接?我不想在所有地方启用符号链接,只是为了使包含.pdf文件的目录可用于网络。
test1
创建META-INF/context.xml包含以下内容的解决方案存在一些问题<Context path="/myapp" allowLinking="true">
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"。(请参阅我对上下文优先级问题的回答)
conf/context.xml
allowLinking
<Context>
META- INF/context.xml
allowLinking="false"
为确保您的应用程序允许链接,您必须说<Context override="true" allowLinking="true" ...>。
<Context override="true" allowLinking="true" ...>
另一个问题是,path="/myapp"在一个被忽略META- INF/context.xml。为避免混淆,最好将其排除在外。唯一一次path在<Context>有任何效果的server.xml,和官方的Tomcat文档建议不要把<Context>S IN一个server.xml。
path="/myapp"
path
server.xml
最后,myapp/META- INF/context.xml我建议使用conf/Catalina/localhost/myapp.xml文件而不是文件。这项技术意味着您可以保持自己内容的META- INF干净,这就是webapp的胆量-我不愿意冒着被webapp胆量搞糊涂的风险。:-)
myapp/META- INF/context.xml
conf/Catalina/localhost/myapp.xml
META- INF