我正在研究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值?

最佳答案

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

10-06 10:00
查看更多