【问题标题】:Why does JBoss always redeploy .WAR files that have already been deployed but not changed?为什么 JBoss 总是重新部署已经部署但未更改的 .WAR 文件?
【发布时间】:2016-02-04 23:15:55
【问题描述】:

我是使用 JBoss 7.1.1 服务器的新手,对我观察到的行为感到困惑。

我的 JBoss 服务器正在部署我放在 .\jboss-as-7.1.1.Final\standalone\deployments 文件夹中的 six jBPM .war files (designer, drools-guvnor, jbpm-form-builder, jbpm-gwt-console, jbpm-gwt-console-server, jbpm-human-task-war)

当我第一次启动服务器时,它检测到这些文件并部署它们。我看到deploymentNNNtempNNN 文件夹出现在.\jboss-as-7.1.1.Final\standalone\tmp\vfs 文件夹中。这类似于我在使用 tomcat 服务器时所熟悉的行为。

然后我关闭服务器并观察在.\jboss-as-7.1.1.Final\standalone\tmp\vfs 中创建的两个文件夹被保留,但它们的内容被自动删除。当我重新启动服务器时,它再次将六个 jBPM 文件部署到 .\jboss-as-7.1.1.Final\standalone\tmp\vfs. 中的一对新文件夹中

这非常令人惊讶,因为没有对六个 jBPM 文件进行任何更改,问题是重新部署需要 3 到 4 分钟。

如果这只是在“生产”环境中发生,那么这可能不是什么大问题。但是,我正在尝试将 JBoss 服务器集成到开发环境中与 Eclipse Kepler 一起使用,每次代码更改和服务器启动都必须等待 3 到 4 分钟。

1) 谁能解释一下为什么 JBoss 会费力重新部署未更改的文件?

2) 这是一种可以通过配置设置更改的行为吗?

3) 是否有任何设置可以阻止 jboss 在重新启动时重新部署 war 文件

谢谢你, 全部

【问题讨论】:

    标签: java jboss


    【解决方案1】:

    为了阻止 JBoss 重新部署您的应用程序(并在关机时删除),

    尝试以解包形式部署应用程序。

    • 解压文件到{name}.war directories(e.g /designer.war, /drools-guvnor.war)

      然后部署这些目录(即将它们复制到部署文件夹)

    或者,尝试使用 JBoss CLI 部署它们

    【讨论】:

    • 感谢您的帮助。将文件提取到 {name}.war 目录可避免重新部署。
    【解决方案2】:

    以不同方式部署不会改变 JBOSS 在启动时将您的应用程序重新加载到 JVM 的事实。

    这可能需要一些时间,因为您的应用程序将数据从数据库存储到服务器内存中。 (你也可以点击this WFLY-925 bug...或者他们正在谈论的here...)

    问题是重新部署时通常不需要完全重新启动服务器。您可以在自动部署模式hot-deploy your module - see also full doc.。 (确保feature isn't disabled

    如果你需要一些context to be reloaded,我建议你在你的代码中有一个特定的过程,你可以调用它来重新加载所有缓存的信息。而不是完全重新启动(例如,从您的应用程序调用特定 URL 来执行此操作...)

    【讨论】:

    • 'Normally' 是关键字 :) 我需要完全重新启动我的 JBoss,因为在我的一个模块上进行热部署时它不会加载所有更改。但是另一个模块可能没有变化,所以我不希望这个模块总是重新部署。
    • 这就是我所说的“重新加载一些上下文”。您必须清楚地确定需要重新加载的内容(数据?),并为此提供特定的功能。然后你只需调用该函数(特定的 url?,线程?)而不是重新启动。
    猜你喜欢
    • 2013-02-27
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多