如何从Tomcat中的外部目录请求内容?

时间:2017-05-04 11:15:15

标签: java tomcat server.xml

准确地说,我需要从外部目录中获取图片:C:/MWDB。 我找到了这个链接:How to config Tomcat to serve images from an external folder outside webapps?我想跟进你需要在server.xml context标签中添加目录的部分。

所以基本上基于它说我带来的方式它应该是:

<Context docBase="C:/MWDB" path="/images" reloadable="true" source="org.eclipse.jst.jee.server:Duck"/>(请求:www.example.com/images/image.png)以这种方式重新启动服务器时会弹出一个错误说

  

localhost上的服务器遇到了问题

然后我这样做了:<Context docBase="C:/MWDB" path="/images"/>而且我甚至无法访问我的index.html文件

FULL 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 个答案:

答案 0 :(得分:0)

好的,我发现了我的问题。

基本上我不知道的是,你可以同时拥有多个<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"/>

到目前为止完美地工作:)