Tomcat 如何更新war文件中的单个文件

Tomcat 如何更新war文件中的单个文件,tomcat,Tomcat,我正在研究如何使用war文件高效地部署应用程序。我现在做的是每次发布时都要交付war文件 这意味着每次有更改时,无论更改有多小,我都必须构建和交付构成应用程序的所有文件。我想这可能不是正确的方法 例如,如果有一个css文件的变化,我必须重建war文件,其中将包括所有文件。这还包括重新编译所有*.java文件 在上面的示例中,是否可以只使用css文件构建war文件,并将其部署到tomcat服务器,让tomcat只替换css文件,而保留所有其他内容 您可以进行分解部署,只需解压缩war文件即可。然后

我正在研究如何使用war文件高效地部署应用程序。我现在做的是每次发布时都要交付war文件

这意味着每次有更改时,无论更改有多小,我都必须构建和交付构成应用程序的所有文件。我想这可能不是正确的方法

例如,如果有一个css文件的变化,我必须重建war文件,其中将包括所有文件。这还包括重新编译所有*.java文件


在上面的示例中,是否可以只使用css文件构建war文件,并将其部署到tomcat服务器,让tomcat只替换css文件,而保留所有其他内容

您可以进行分解部署,只需解压缩war文件即可。然后可以更新各个文件。为此,您需要将解包目录放在希望保存war文件的位置。如果您使用tomcat并查看deploy目录,您将看到tomcat无论如何都是这样做的


但不能保证这些更改会被接受。CSS文件和图像等应该不会造成任何问题,但是JSP、模板文件等往往会被编译和缓存,您必须使用一些配置魔法让应用程序替换这些工件。通常这是以性能为代价的,当类被替换但没有从内存中释放时,可能会导致可怕的PermGen错误。如果这样做,请确保在适当的时候定期跳转服务器,并使用virtualvm或jconsole或类似工具关注PermGen内存区域

您可以进行分解部署,只需解压缩war文件即可。然后可以更新各个文件。为此,您需要将解包目录放在希望保存war文件的位置。如果您使用tomcat并查看deploy目录,您将看到tomcat无论如何都是这样做的


但不能保证这些更改会被接受。CSS文件和图像等应该不会造成任何问题,但是JSP、模板文件等往往会被编译和缓存,您必须使用一些配置魔法让应用程序替换这些工件。通常这是以性能为代价的,当类被替换但没有从内存中释放时,可能会导致可怕的PermGen错误。如果这样做,请确保在适当的时候定期跳转服务器,并使用virtualvm或jconsole或类似工具关注PermGen内存区域

当你提到部署目录时,你是指webapps目录Tomcat吗?究竟是什么导致了PermGen错误?我想如果你用一个新的类来替换一个类,它会被替换吗?如果我制作一个war文件,其中只有一个文件,tomcat会删除现有的文件夹吗?我应该自己试试!类将移动到永久生成,默认情况下,永久生成不会进行清理。因此,被调出的类不会导致释放永久发电机中的内存。如果你创建了一个包含单个文件的war,如果我没记错的话,它会删除完整的分解文件夹。简单地将文件放置到位要容易得多。我认为,某个文件触发了一个完整的站点重新部署,web.xml。至少在JBoss中是这样的。我必须尝试web.xml部署,因为这意味着如果部署了web.xml,其他所有内容都必须重新部署。当你提到部署目录时,你是指webapps目录Tomcat吗?究竟是什么导致了PermGen错误?我想如果你用一个新的类来替换一个类,它会被替换吗?如果我制作一个war文件,其中只有一个文件,tomcat会删除现有的文件夹吗?我应该自己试试!类将移动到永久生成,默认情况下,永久生成不会进行清理。因此,被调出的类不会导致释放永久发电机中的内存。如果你创建了一个包含单个文件的war,如果我没记错的话,它会删除完整的分解文件夹。简单地将文件放置到位要容易得多。我认为,某个文件触发了一个完整的站点重新部署,web.xml。至少在JBoss中是这样的,我必须尝试web.xml部署,因为这意味着如果部署了web.xml,其他所有的东西都必须重新部署。