Как запросить содержимое из внешнего каталога в Tomcat?
Чтобы быть точным, мне нужно получить фотографии из внешнего каталога, скажем: C:/MWDB
, Я нашел эту ссылку: Как настроить Tomcat для обслуживания изображений из внешней папки вне веб-приложений? которую я хочу завершить с частью, где вам нужно добавить каталог в вашем server.xml context
тег.
Так что в основном, исходя из того, как он говорит, что я пришел с этим, это должно быть так:
<Context docBase="C:/MWDB" path="/images" reloadable="true" source="org.eclipse.jst.jee.server:Duck"/>
(запрос: www.example.com/images/image.png) таким образом, при перезапуске сервера появляется сообщение об ошибке
Сервер на локальном хосте столкнулся с проблемой
Который тогда я сделал это: <Context docBase="C:/MWDB" path="/images"/>
И это я даже не могу получить доступ к моему файлу index.html
ПОЛНЫЙ server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server port="20011" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="20000" port="20012" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="20013" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context docBase="C:/MWDB" path="/images" reloadable="true" source="org.eclipse.jst.jee.server:Duck"/></Host>
</Engine>
</Service>
</Server>
Я использую Java 8, Apache Tomcat v9.0
1 ответ
Хорошо, я понял мою проблему.
По сути, я не знал, что вы можете иметь несколько <context>
в то же время.
Итак, когда у меня было что-то вроде:
<Context docBase="C:/MWDB" path="/images"/>
Сервер мог работать только из каталога MWDB, а не из моего внутреннего проекта, и поэтому я не мог получить доступ к своему файлу index.html. Так что для сервера из обоих каталогов просто вы можете сделать:
<Context docBase="C:/MWDB" path="/images" reloadable="true" source="org.eclipse.jst.jee.server:Duck"/>
<Context docBase="C:/MWDB" path="/images"/>
Пока работает отлично:)