Java webapp部署:爆炸还是不爆炸?

时间:2011-07-15 07:33:54

标签: java deployment jboss

一个非常简单的问题。我有一个.war(~40MB)文件可以在JBoss上运行。 部署的最佳实践是什么:war文件是否应以展开格式部署?或者不是?

我问,因为如果它爆炸了,那么我可以随时选择更新我的属性文件(每次更改属性文件时都不需要进行新的战争)。

但我不确定以爆炸格式部署战争是最佳做法。

请帮我意识到。 :)

4 个答案:

答案 0 :(得分:14)

  

war文件应该以展开格式部署吗?或者不是?

这取决于几个因素:

  • 您是否需要应用程序服务器管理员在部署后修改WAR文件的内容?如果答案是肯定的,特别是在涉及属性或配置文件的情况下,那么您应该使用分解格式。这样可以更容易地对文件进行更改,而无需重新部署完整的WAR文件。
  • 如何将更改传播到生产中?如果您没有预编译JSP文件,并且打算通过将它们复制到包含爆炸的WAR文件的区域来部署更新版本的JSP,那么很明显重新部署一个巨大的WAR文件不是最佳解决方案。但请注意,这取决于您的部署实践。通常,更容易审核生产中的WAR文件是从版本控制生成的构建的副本,并使用WAR文件的单个哈希。如果部署增量更改,您将发现每个部署的文件都需要哈希。
  • 您希望多久部署一次应用程序并使其可用?这一点很简单,但是有足够多的应用程序实例需要几分钟才能启动,因为应用程序服务器正在忙于爆炸WAR文件并重新创建必要的工件。如果服务器的行为是在每次重新启动应用程序服务器时爆炸WAR文件,这可能会导致严重的停机时间。由于我不知道JBoss的行为或有问题的特定版本,我建议您自行验证,以确保您可以将停机时间限制在可接受的水平。

答案 1 :(得分:8)

修改爆炸内容肯定更快,更有效,但一个考虑因素是审计和可追溯性。仅部署WAR文件并将其视为“密封”的一个优点是,您所做的任何更改都必须在源代码管理系统中捕获。您当然不希望人们在没有某种审计跟踪的情况下,能够在应用程序的配置中更改他们想要的任何内容。

Java EE关注点分离通常意味着WAR的开发人员与应用服务器的管理员不同。如果开发人员没有直接访问权限,那意味着那些完全不了解该应用程序的人正在进行更改。

我并没有捍卫禁止开发人员修改爆炸性WAR的极端心态,只是指出了另一种观点供你考虑。

答案 2 :(得分:1)

如果你需要更改.war中的配置而不重新部署,我宁愿部署爆炸。否则我更愿意部署文件(然后jboss会将文件解压缩到tmp/deploy/..

答案 3 :(得分:0)

无论如何它都会爆炸,所以即使部署为战争你也能改变属性......它没有任何区别。至少在开发环境中。

但是,如果您要以展开格式部署到生产中,那么您可以更改属性文件,这不是在部署后更改属性(生产)所需的更大问题吗?而不是你是否使用过战争。