У меня Apache Tomcat 7.0 установлен на сервере Windows 2008 R2. Tomcat имеет доступ к общему ресурсу \ server \ share, в котором есть папка документов, к которой я хочу получить доступ с помощью / foo / Documents в моем веб-приложении.
Мое приложение может получить доступ к документам, если я установил путь к файлу //server/share/documents/doc1.doc. Я не хочу, чтобы путь к файловому серверу отображался в моей ссылке на файл в моем приложении. Я хочу указать путь к '/foo/Documents/doc1.doc'.
В http://www3.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html в пункте «Настройка корневого каталога контекста и URL-адреса запроса веб-приложения» номер два говорится, что я могу переименовать путь, поместив контекст в файл server.xml. Я положил
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/foo" docBase="//server/share" reloadable="false"></Context>
</Host>
Добавлен контекст внизу. Затем я попытался вытащить файл с помощью /foo/Documents/doc1.doc, и это не сработало. Что мне нужно сделать, чтобы он работал правильно? Должен ли я вместо этого использовать псевдоним? Есть ли другие проблемы с безопасностью, которые это может вызвать?
Проблема была не в настройке Tomcat. Оказалось, что приложение интерпретировало путь к диску C. Я заменил отредактированный путь в приложении, чтобы он указывал на общий ресурс. Это устранило мою проблему. Код Java получил доступ к общему ресурсу, как только я правильно настроил его, чтобы указать правильный путь.