【问题标题】:Shared Dependency for two Deployments on WildflyWildfly 上两个部署的共享依赖关系
【发布时间】:2021-10-02 14:04:23
【问题描述】:

我有两个 webapps,它们部署在同一个 wildfly 中。两个 webapp 应该共享某些库,这些库不属于 wildfly 模块。

为了使部署不依赖于特定的 wildfly,我不希望通过 wildfly-module 系统提供共享库(我知道,可以用户定义模块)。

我的方法是简单地将库与两个 webapps 一起放在部署目录中,并在各自的 jboss-deployment-structures 中引用它们。然而,这失败了。

我试图将库嵌入到战争中并通过

<module name="test.war" />

它不起作用,因为找不到模块。我从 redhat 找到了一份文档,让我认为这可能有效:Redhat

我还测试了将裸 jar 放在部署目录中并通过资源根引用它:

<resources>
  <resource-root path="my-library.jar" />
</resources>

此引导程序,但库中的类对部署不可见。

所以我的问题是:有没有办法在 wildfly 的部署目录中部署一个库并从 EAR/WAR 部署中使用它?

【问题讨论】:

  • 我不确定您为什么要避免使用模块。您可以使用jboss-cli 或其他工具轻松编写这些安装脚本。话虽如此,您是否希望您的部署具有不同版本的公共库?它是否太大以至于占用了太多的磁盘和/或内存?如果它不是太重,您可能会尝试优化,但收效甚微。
  • 我们考虑在 jboss-cli 可能不可用的环境中部署应用程序。目前,我们将两个应用程序集中到同一个耳朵中,这会导致构建时间非常短(仅用于打包耳朵)

标签: java deployment wildfly


【解决方案1】:

这是一个简单的错误,重新阅读手册即可解决。

如果您从deployments 目录引用部署,则必须指定这样做。因此,从a.war 访问b.war,您必须提供一个 jboss-deployment-structure,其内容为

<dependencies>
    <module name="deployment.b.war" />
</dependencies>

如果这样做,webapp A 可以访问 webapp B 中定义的所有 java 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多