JBOSS 7.1战争部署问题

时间:2013-09-24 12:47:17

标签: jboss

我是JBOSS Application server 7.1的新手。

我为我的应用程序创建了war并将其放在deployments文件夹中。

然后我启动了JBoss 7.1应用服务器。

战争在一些临时地点被提取出来。

现在我的应用程序我们有一些可配置的属性。

从内部应用程序中,这些属性会被修改并保存在context / web-inf / properties文件夹中。

当服务器正在运行时,这适用于我。

但是如果我重新启动服务器,那么JBOSS 7.1会再次在某个不同的临时位置重新部署战争(而不是使用以前的位置)。

由于这个原因,我保存的属性会丢失。

有什么办法可以阻止这个吗?

非常感谢任何帮助。

提前谢谢。

3 个答案:

答案 0 :(得分:0)

在运行时修改战争中的资源是一个非常糟糕的主意。

而不是在/web-inf/properties/中保存此属性文件,而不是将其放在其他位置。 (例如$USER_HOME/.myapp/config/

为什么这是一个坏主意?

  • 你遇到的问题是一个很好的理由(即重新部署时被覆盖/丢失)
  • 您可以配置一些应用服务器,以便在修改资源时重新部署应用。 (因此可能会意外触发重新部署)

答案 1 :(得分:0)

尝试通过jboss-cli或管理控制台部署WAR。它可能会在每次重新启动时重新加载部署文件夹中的项目,因为该文件夹用于热部署。

通过我提到的两种方法完成它可能会保留战争并保留相同的tmp文件。

Tho ben75是正确的,您应该在外部移动属性文件。

JBoss还使用虚拟文件系统(VFS)进行操作,我不确定Weblogic,Tomcat或WebSphere是否自行使用。

答案 2 :(得分:0)

  • 它可能在其他应用程序服务器中工作,但我没有发现servlet规范保证了您期望的行为。
  • 通常,数据中心从不接受自我修改的应用程序。其中一个原因是通常没有提取战争文件的定期备份,因为数据不应该在那里。另一个原因是需要在环境之间有所不同:初始配置通常不相同,因此您必须单独发货,因为.ear / .war文件必须始终相同。
  • 如果它正确实现了群集范围的属性同步,那么您的实现非常复杂。

因此,如果您未在群集中运行,只需将属性文件写入应用程序服务器外部的已定义目录,并确保存在常规备份。如果应用程序已更新,则保留配置方式。

如果群集将更改保留在数据库中,并使用JGroups / Infinispan同步这些值,例如。