0

我是 JBOSS 应用程序服务器 7.1 的新手。

我为我的应用程序创建了战争并将其放在部署文件夹中。

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

战争在某个临时位置提取。

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

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

当服务器运行时,这对我有用。

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

因此,我保存的属性会丢失。

有什么办法可以防止这种情况吗?

任何帮助将不胜感激。

先感谢您。

4

3 回答 3

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

因此,如果您不在集群中运行,只需将属性文件写入应用程序服务器之外的已定义目录,并确保有定期备份。如果应用程序被更新,这种方式的配置会被保留。

例如,在集群的情况下,将更改保存到数据库中,并使用 JGroups/Infinispan 同步值。

于 2013-09-25T09:23:02.423 回答
0

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

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

为什么这是一个坏主意?

  • 您遇到的问题是一个很好的理由(即在重新部署时被覆盖/丢失)
  • 您可以配置一些应用服务器,以便在修改资源时重新部署应用。(因此它可能会意外触发重新部署)
于 2013-09-24T12:58:27.613 回答
0

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

通过我提到的两种方法进行操作可能会保留战争并保留相同的 tmp 文件。

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

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

于 2013-09-24T18:45:56.893 回答