Как запросить содержимое из внешнего каталога в 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 &quot;%r&quot; %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"/>

Пока работает отлично:)

Другие вопросы по тегам