2

刚从 Tomcat 5 迁移到 Tomcat 7 并遇到部署问题。

我最初通过复制到 webapps 来部署我的应用程序小部件widget.war,这很有效,Tomcat 部署并引发了战争。

当我想进行更改时,问题就出现了。

如果我重新部署战争一切正常,但因为我将战争上传到远程服务器,这可能会很慢。因此,如果我只是更改一个类,我只需将新类直接复制到展开的文件夹结构中,然后关闭并重新启动 Tomcat,但它没有任何效果。

我想我已经解决了,因为 widget.war 被重新部署,所以我的新类被 widget.war 中的旧版本类取代。因此,我手动删除了 widget.war,因此它不会被覆盖,但是在关机/启动时我根本没有小部件文件夹。它消失了!

为什么会这样,这在 Tomcat 5 中没有发生。

4

2 回答 2

2

以这种方式部署单文件修复是一种确​​保无法重建服务器上正在运行的内容的可靠方法,这是一种痛苦但需要维护的情况。

干净的解决方案是只部署完整的战争文件

现在你说复制到远程服务器很慢?有一个简单的解决方案:

在远程服务器的某个地方(Tomcat webapps 目录之外)保留一份最新的 war 文件的副本,并rsync在上面保存新版本:这应该会快得多,因为只需要传输更改的数据。然后从该目录部署。

于 2012-09-18T07:20:00.620 回答
1

如果您在 tomcat 运行时删除 .war 文件,它也会删除展开的目录。您可以先关闭 tomcat,删除 .war 文件然后重新启动,或者更好,为什么不直接将 .war 文件手动解压缩到 webapps 文件夹中(但不要将 .war 文件放在 webapps 中)。

于 2012-09-18T07:12:39.470 回答