JBoss Wildfly - 部署是临时文件。属性呢?
JBoss Wildfly - deployment are temporary files. What about properties?
我正在处理一个 Java 项目,我遇到了 Wildfly 10 的部署问题。我没有在其文档中找到解决方案,希望得到一些帮助。
当我部署 .WAR 时,Wildfly 创建了一个临时文件夹来存储分解的文件:
./standalone/tmp/vfs/temp/tempb75b67d7adb84a3d/web.war-47f6d3d54946006d/
一旦我用 /etc/init.d/wildfly stop
停止 Wildfly,所有这些临时文件都会立即从磁盘中删除。
问题:
WAR 包含管理员必须 modified/configured 默认的 .properties 文件。由于每次部署都会删除文件,因此目前无法做到这一点。
问题:
- 有没有办法让 Wildfly 将 .WAR 部署到永久文件夹(类似于
Apache Tomcat
)?
- 考虑到客户希望将此 .WAR 部署到 Debian Cloud 基础架构,但偶尔也会部署到 Windows服务器?
- 我们应该考虑使用哪些替代方案来存储 .properties 值?
WildFly 支持解压缩(分解)部署。查看 $JBOSS_HOME/standalone/deployments/README.txt
了解详情。基本上,您可以将 WAR 解压缩到一个子目录并添加一个标记文件以部署它。
但是,任何依赖于给定主机环境的配置信息都不应该放在 WAR 中。 WAR 是一个 compile-time 工件,在 run-time 应该被视为不可变的。 (一些 Web 容器解压缩 WAR 并公开其内部结构这一事实是您永远不应依赖的实现细节。)
相反,您可以通过系统属性、环境变量、JNDI 条目等定义配置数据。
我经常使用 WildFly 的一个非常简单的方法是 -P
选项:
cd $JBOSS_HOME/bin
./standalone.sh -P myconfig.properties
其中 myconfig.properties
是一个简单的 Java 属性文件。 WildFly 在其 start-up 阶段很早就读取此文件并将所有属性设置为系统属性。
作为系统属性,这些配置项将对所有 部署可见,只要您控制部署到服务器的内容,这应该不是问题。为避免不同部署的属性之间发生冲突,您可以为 属性 键使用特定于部署的前缀,例如
app1.jdbc.url = jdbc:postgresql://localhost/app1
app2.jdbc.url = jdbc:postgresql://localhost/app2
我正在处理一个 Java 项目,我遇到了 Wildfly 10 的部署问题。我没有在其文档中找到解决方案,希望得到一些帮助。
当我部署 .WAR 时,Wildfly 创建了一个临时文件夹来存储分解的文件:
./standalone/tmp/vfs/temp/tempb75b67d7adb84a3d/web.war-47f6d3d54946006d/
一旦我用 /etc/init.d/wildfly stop
停止 Wildfly,所有这些临时文件都会立即从磁盘中删除。
问题:
WAR 包含管理员必须 modified/configured 默认的 .properties 文件。由于每次部署都会删除文件,因此目前无法做到这一点。
问题:
- 有没有办法让 Wildfly 将 .WAR 部署到永久文件夹(类似于
Apache Tomcat
)? - 考虑到客户希望将此 .WAR 部署到 Debian Cloud 基础架构,但偶尔也会部署到 Windows服务器?
- 我们应该考虑使用哪些替代方案来存储 .properties 值?
WildFly 支持解压缩(分解)部署。查看 $JBOSS_HOME/standalone/deployments/README.txt
了解详情。基本上,您可以将 WAR 解压缩到一个子目录并添加一个标记文件以部署它。
但是,任何依赖于给定主机环境的配置信息都不应该放在 WAR 中。 WAR 是一个 compile-time 工件,在 run-time 应该被视为不可变的。 (一些 Web 容器解压缩 WAR 并公开其内部结构这一事实是您永远不应依赖的实现细节。)
相反,您可以通过系统属性、环境变量、JNDI 条目等定义配置数据。
我经常使用 WildFly 的一个非常简单的方法是 -P
选项:
cd $JBOSS_HOME/bin
./standalone.sh -P myconfig.properties
其中 myconfig.properties
是一个简单的 Java 属性文件。 WildFly 在其 start-up 阶段很早就读取此文件并将所有属性设置为系统属性。
作为系统属性,这些配置项将对所有 部署可见,只要您控制部署到服务器的内容,这应该不是问题。为避免不同部署的属性之间发生冲突,您可以为 属性 键使用特定于部署的前缀,例如
app1.jdbc.url = jdbc:postgresql://localhost/app1
app2.jdbc.url = jdbc:postgresql://localhost/app2