我有以下default-ssl.conf
ProxyPass / comunes / http://mapapre.mapa.es/comunes/
在DES环境中。
现在,我想在本地的Apache tomcat中创建它。
我修改了文件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 docBase="/comunes/" path="http://mapapre.mapa.es/comunes/" />
</Host>
统计服务器时,出现错误
Caused by: java.lang.IllegalArgumentException: The main resource set specified [D:\apache-tomcat-9.0.27\webapps\comunes] is not valid
at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:752)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:709)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
如何在本地apache中创建此链接?
最佳答案
如果阅读Context documentation,将会发现您对使用的path
和docBase
属性有基本的误解。
docBase
为此的文档库(也称为上下文根)目录
Web应用程序,或Web应用程序存档文件的路径名
(如果直接从WAR执行此Web应用程序
文件)。您可以为此目录或WAR指定绝对路径名
文件,或相对于appBase目录的路径名
拥有主机。
除非Context元素为,否则不得设置此字段的值。
在server.xml中定义或docBase不在主机的
appBase。
如果将符号链接用于docBase,则更改为符号链接
链接仅在Tomcat重新启动或通过取消部署后才有效
并重新部署上下文。上下文重载是不够的。
和
路径
此Web应用程序的上下文路径,与
每个请求URI的开头以选择适当的网站
申请处理。内的所有上下文路径
特定主机必须是唯一的。如果您指定
空字符串(“”),您正在定义默认的Web应用程序用于
该主机,它将处理所有未分配给其他主机的请求
上下文。
仅在以下情况下静态定义Context时才必须使用此属性:
server.xml。在所有其他情况下,将从
用于.xml上下文文件或docBase的文件名。
即使在server.xml中静态定义Context时,此属性
除非docBase不在
主机的appBase或deployOnStartup和autoDeploy均为false。如果
不遵守此规则,可能会导致双重部署。
除此之外,您可能只需要将Web应用程序部署在名称为webapps/
的tomcat的comunes.war
目录中(或在目录webapps/comunes
中),而无需在server.xml中进行任何静态配置。