![在 Tomcat 中使用自定义上下文部署 war](https://linux22.com/image/558332/%E5%9C%A8%20Tomcat%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%8A%E4%B8%8B%E6%96%87%E9%83%A8%E7%BD%B2%20war.png)
我有一台 Tomcat 服务器,由 Apache 负责前端,使用 AJP 进行通信。配置使用 JkMount 将 Apache 上的 URL 映射到 Tomcat 节点。
我正在帮助部署一个使用 Maven 构建的应用程序,因此以名为“my-war-3.0.1.war”的文件的形式交付。
我们可以做以下样式的 JkMount 声明:
JkMount /my-war-3.0.1 my-node
JkMount /my-war-3.0.1/* my-node
但显然这需要版本号。新版本将意味着更新安装和用户的书签等,这显然不是一件好事。
我希望能够以以下样式声明 JkMount:
JkMount /my-war my-node
JkMount /my-war/* my-node
但我很确定这意味着.war 文件需要以相同的方式命名。
我很确定可以使用 Context 文件片段告诉 Tomcat 以另一个名称部署指定的 .war,但我似乎得到的只是有关在 AppBase 内部部署 war 的错误消息。
我工作的环境非常锁定——需要进行大量测试才能更改环境的配置,因此部署上下文片段文件作为一种可交付成果将是一个很好的解决方案。
这可能吗?如果可以,那么 Context 文件应该是什么以及它应该放在哪里?
我正在使用 Tomcat 6.0.14,正如我之前所说,环境非常锁定,因此修改 Tomcat 配置/文件夹结构会很麻烦。
另一个解决方案当然是从可交付成果名称中删除版本号,这从开发团队的角度来看是可以接受的,但我认为为了清楚起见,每个人都希望可交付成果的名称中包含版本号。
答案1
我想到的第一件事是为你的 webapp 创建一个符号链接。每当你更改版本时,只需重新创建一个符号链接。
ln -s /path/to/tomcat/webapps/my-war-3.0.1 /path/to/tomcat/webapps/my-war
然后,创建一个context.xml
文件webapps/my-war-3.0.1/WEB-INF
以启用符号链接:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/my-war" allowLinking="true">
</Context>