【问题标题】:Wildfly Deployment going to temp folderWildfly 部署到临时文件夹
【发布时间】:2016-12-23 12:04:06
【问题描述】:

在将 Web 服务部署到 WAR 文件时,我遇到了一个奇怪的问题。

如果我通过 Netbeans IDE 部署应用程序,它将位于 \standalone\deployments 目录下。

但是,如果我从管理控制台部署 war 文件,它总是被部署在 \standalone\tmp 目录中。

请指导这个问题。部署应仅位于 \standalone\deployments 目录下。

【问题讨论】:

    标签: java deployment wildfly-10


    【解决方案1】:

    部署应仅位于 \standalone\deployments 目录下

    你说的很不对。

    这不是问题。就是这样。

    • 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 将其指向“类路径:”而不是“文件:”。

    【讨论】:

    • 非常感谢。这是可行的,但我在项目的资源文件夹下有 .properties 文件。部署后,它会给出错误 FileNotFoundException,这在热部署中不会发生。此外,当将解决方案提供给客户时,这种方法将是不可接受的。您能否指导如何使用管理控制台部署来实现这一点。
    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 2014-03-18
    • 2019-10-27
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2015-07-20
    • 2015-05-29
    相关资源
    最近更新 更多