【问题标题】:JBoss Wildfly - deployment are temporary files. What about properties?JBoss Wildfly - 部署是临时文件。属性呢?
【发布时间】:2016-05-01 12:47:04
【问题描述】:

我正在处理一个 Java 项目,但 Wildfly 10 的部署存在问题。我在其文档中找不到解决方案,希望能得到一些帮助。


当我部署 .WAR 时,Wildfly 会创建一个临时文件夹来存储分解后的文件:

./standalone/tmp/vfs/temp/tempb75b67d7adb84a3d/web.war-47f6d3d54946006d/

一旦我用/etc/init.d/wildfly stop 停止 Wildfly,所有这些临时文件都会立即从磁盘中删除。

问题:

WAR 包含必须由管理员修改/配置的默认 .properties 文件。由于每次部署都会删除文件,因此目前不可能。

问题:

  • 有没有办法让 Wildfly 将 .WAR 部署到永久文件夹(类似于 Apache Tomcat)?
  • 考虑到客户希望将此 .WAR 部署到 Debian Cloud 基础架构,但偶尔也部署到 Windows Server,这样做是否是一种好的 J2E 实践?
  • 我们应该考虑哪些替代方法来存储 .properties 值?

【问题讨论】:

    标签: java deployment jboss wildfly


    【解决方案1】:

    WildFly 确实支持解压缩(分解)部署。详情请查看$JBOSS_HOME/standalone/deployments/README.txt。基本上,您只需将 WAR 解压缩到子目录并添加标记文件即可部署它。

    但是,任何依赖于给定主机环境的配置信息都不应该放在 WAR 中。 WAR 是编译时工件,在运行时应被视为不可变。 (事实上​​,一些 web 容器解压 WAR 并暴露其内部是一个你不应该依赖的实现细节。)

    相反,您可以通过系统属性、环境变量、JNDI 条目等来定义配置数据。

    我经常与 WildFly 一起使用的一个非常简单的方法是 -P 选项:

    cd $JBOSS_HOME/bin
    ./standalone.sh -P myconfig.properties
    

    其中myconfig.properties 是一个简单的Java 属性文件。 WildFly 在其启动阶段很早就读取此文件并将所有属性设置为系统属性。

    作为系统属性,这些配置项将对所有部署可见,只要您控制部署到服务器的内容,这应该不是问题。为避免不同部署的属性之间发生冲突,您可以为属性键使用特定于部署的前缀,例如

    app1.jdbc.url = jdbc:postgresql://localhost/app1
    app2.jdbc.url = jdbc:postgresql://localhost/app2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 2013-12-11
      • 2015-01-16
      • 2015-04-30
      • 2017-03-25
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多