0

我想使用 maven 将应用程序(war)部署到远程 tomcat(v7)中,保留现有的 context.xml - 或者也可以将 context.xml 与 war 一起部署。我认为这是一个经典问题,如果您想通过管理器重新部署到 tomcat,它会按顺序执行取消部署和部署 - 取消部署 context.xml 作为副作用,然后应用程序无法启动。

我已经尝试过的:

  • 具有不同设置的货物 - 没有变化
  • 'autoDeploy' = false - 在 tomcat 7 下不起作用
  • 限制 tomcat 编写自己的配置目录 - 抛出错误消息并且 tomcat 7 无法启动
  • 将每个上下文信息放入一个 context.xml.default - 不会删除上下文,但不幸的是,我们有一些应用程序在具有不同值的不同上下文中使用相同的键:-)
  • 将上下文配置放入替代路径 - 在 ${catalina.base} 之外 - 无法使其工作
  • 构建一个容器(docker)并重新部署它 - 这是可行的,但目前这不是一个选项

我正在考虑编写一个简单的 ssh 脚本(stop-tomcat、copy-war、start-tomcat)或替代管理器脚本,但首先我想在重新发明轮子之前问你。我看到了使用'tomcat7-maven-plugin'的解决方案,但听说它只适用于本地tomcat。我不坚持要获得一个成熟的 maven 解决方案:如果您建议使用带有简单 REST 调用的管理器的解决方案,我也可以在 maven 中实现。

所以问题分为三种可能的解决方案(在tomcat7下):

  • 通过取消部署保留 context.xml
  • 使用战争部署 context.xml
  • 在不取消部署的情况下重新部署应用程序

你知道一个可靠的解决方案吗?

4

1 回答 1

0

最后我提出了一个运行脚本的不是很好但工作的解决方案: - 登录到 tomcat 机器 - 停止实例 - 清理 webapps 目录 - 将战争下载到 webapps 目录 - 启动实例

再说一遍:tomcat 6 和 8 中不存在这个问题 :-)

于 2016-07-25T15:06:01.967 回答