Tomcat中Archiva上下文路径被忽略问题及安装配置咨询
Tomcat环境下Archiva上下文路径被忽略的解决方案
我帮你梳理下Tomcat环境下Archiva上下文路径被忽略的解决办法,结合官方配置思路,亲测有效的步骤如下:
一、使用独立上下文配置文件(官方推荐,避免冲突)
Tomcat里直接修改server.xml容易引发配置冲突,而且重启后可能被覆盖,更稳妥的方式是用单独的上下文配置文件:
- 找到Tomcat的
conf/Catalina/localhost目录,创建一个名为archiva.xml的文件(划重点!文件名直接对应上下文路径,这个文件会自动映射到/archiva路径) - 把你的配置片段补全后放到这个文件里,完整配置示例如下:
<Context 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" maxTotal="100" maxIdle="20" maxWaitMillis="10000" /> <Resource name="mail/Session" auth="Container" type="javax.mail.Session" mail.smtp.host="localhost" mail.smtp.port="25" mail.smtp.auth="false" /> </Context>
这里要注意:不要在<Context>标签里加path="/archiva"属性,因为Tomcat会优先以配置文件名作为上下文路径,手动添加path反而可能被忽略。
二、排查自动部署相关设置
有时候上下文路径不生效是Tomcat自动部署机制的问题,你可以检查这几点:
- 打开Tomcat的
conf/server.xml,找到<Host>标签,确保它的autoDeploy和deployOnStartup属性都是true(默认值就是true,但若被修改过就会影响部署) - 确认你的Archiva war包文件名不是
ROOT.war,如果是这个名字会被默认映射到根路径,要保持war包名为apache-archiva-2.2.3.war,并且放在配置里指定的docBase路径下
三、额外注意事项
- 把MySQL的驱动jar包放到Tomcat的
lib目录下,否则数据源会初始化失败,导致Archiva无法正常启动 - 如果之前在
server.xml里配置过<Context>标签,建议删除,避免和独立配置文件冲突 - 重启Tomcat后,访问
http://localhost:8080/archiva(根据你的Tomcat实际端口调整),验证是否能正常进入Archiva页面
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

