Tomcat上将忽略Archiva上下文路径

时间:2018-03-19 14:56:14

标签: tomcat archiva

关于安装archiva,按照

http://archiva.apache.org/docs/2.2.3/adminguide/webapp.html

<Context path="/archiva"
          docBase="${catalina.home}/archiva/apache-archiva-2.2.3.war">

 <Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource"
           username="archiva"
           password="123456"
           driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://localhost:3306/archiva?useSSL=false" />

 <Resource name="mail/Session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="localhost"/>
</Context>

战争部署到Tomcat 8.0.26。

如果我将上下文路径从/ archiva更改为/ mavenRepos,则无效。

19-Mar-2018 10:49:32.603 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment descriptor [E:\apache-tomcat-9.0.6\conf\Catalina\localhost\archiva.xml]
19-Mar-2018 10:49:32.638 WARNING [main] org.apache.catalina.startup.HostConfig.deployDescriptor The path attribute with value [/mavenRepos] in deployment descriptor [E:\apache-tomcat-9.0.6\conf\Catalina\localhost\archiva.xml] has been ignored

为什么忽略上下文路径?

1 个答案:

答案 0 :(得分:0)

https://github.com/apache/tomcat/blob/trunk/java/org/apache/catalina/startup/HostConfig.java#L581正在记录此警告,这意味着tomcat没有使用上下文的path属性,因此您也可以将其删除。

tomcat为什么不使用它?

根据https://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Common_Attributes,path属性为:

The context path of this web application, which is matched against
the beginning of each request URI to select the appropriate web
application for processing. All of the context paths within a
particular Host must be unique. If you specify a context path
of an empty string (""), you are defining the default web application
for this Host, which will process all requests not assigned to other Contexts.

This attribute must only be used when statically defining a Context
in server.xml. In all other circumstances, the path will be inferred
from the filenames used for either the .xml context file or the docBase.

Even when statically defining a Context in server.xml, this attribute must
not be set unless either the docBase is not located under the Host's appBase
or both deployOnStartup and autoDeploy are false. If this rule is not
followed, double deployment is likely to result.

这意味着将检查服务器收到的每个请求,以查看URL是否以/mavenRepos开头。如果是这样,它将切换到此上下文。

但是,您已经在某个地方声明了该Context,现在已经无法与/mavenRepos进行匹配,因为tomcat已经确定了将哪个请求传递给该Context。请注意上面的第二段:This attribute must only be used when statically defining a Context in server.xml.

在定义路径的其他任何地方,tomcat在加载文件之前都已经从文件名推断出了路径。