在将 Web 服务部署到 WAR 文件时,我遇到了一个奇怪的问题。
如果我通过 Netbeans IDE 部署应用程序,它将位于\standalone\deployments 目录下。
但是,如果我从管理控制台部署 war 文件,它总是部署在\standalone\tmp 目录中。
请指导解决这个问题。部署应仅位于\standalone\deployments 目录下。
最佳答案
The deployment should go under \standalone\deployments directory only
你说得不太对。
这不是问题。就是这样。
- standalone/deployment 文件夹仅用于仅在独立模式下可用的“热部署”功能。 因此,Netbeans 使用它。您可以通过将 EAR 或 WAR 保存到独立/部署中来执行相同的操作,服务器将选择它。 (默认扫描间隔为5秒。)
- 但管理控制台或 CLI 是在域上部署应用程序的唯一(且标准)方式。在域模式下,部署文件夹未使用,并且没有部署扫描程序。 然后,当您使用控制台时,它会采用常见的方式 - 在域上部署,无论它是域还是独立服务器。
更新/后续:
一般来说,最好将 .properties 文件保留在部署之外,放在单独的位置。它们背后的主要思想是能够更改属性而无需重建和重新部署应用程序。通常属性在不同环境(DEV/UAT/PROD)下是不同的
因此有两种最流行的解决方案:
将属性存储在不同位置,将该位置添加到类路径中,并通过
ClassLoader.getResourceAsStream()
机制访问它们将属性存储在不同的位置,通过系统(或-D)变量传递该位置并将它们作为文件访问。对于 JBoss,您可以将 .properties 放置在配置目录下。已经有 JBoss 变量。类似 jboss.config.dir(或者类似的,您可以在管理控制台中找到它,我现在没有 JBoss)。
但是当然有时它仍然需要访问 WAR/EAR 内部的资源 - 在这种情况下它与上面的第一个解决方案几乎相同。
只需确保您的 .properties 文件可通过 ClassLoader(在类路径中)访问,并从 ClassLoader.getResourceAsStream 中使用它们(或者如果您使用 Spring 将其指向“类路径:”不是“文件:”。
关于java - Wildfly 部署进入临时文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301164/