【问题标题】:Wildfly: embedding Spring and Camel into a jarWildfly:将 Spring 和 Camel 嵌入 jar 中
【发布时间】:2017-07-29 04:37:22
【问题描述】:

我们正在使用另一组的 Wildfly 服务器。我们将为他们提供一个或多个罐子/战争,他们将加载到他们的 Wildfly .ear 中。我们无法修改他们 Wildfly 服务器中可用的内容,但我们希望通过 Spring DSL for Camel 访问 Camel。我们正在考虑将 Camel 和 Spring 嵌入到我们的一个 jar 中。我们该怎么做呢?

注意事项:

  • 我们是 Wildfly 的新手,并不了解所有的术语和功能。我们正在浏览教程/示例。

  • 他们目前不考虑在近期内将 Camel 和 Spring 添加到 Wildfly。

【问题讨论】:

    标签: java spring maven apache-camel wildfly


    【解决方案1】:

    也许您需要尝试一下 WildFly 的拥有者再考虑一下...

    将Camel和Spring组合成fat jar文件并部署在ear中

    有可能,但是……不太好

    优点:无。

    缺点:

    • Spring 和 Camel 都不仅仅是单个 jar 文件,而是一堆不同的 jar 文件、传递依赖等等。

    • 将所有这些结合起来将产生非常大的 jar 文件,这些文件将部署在非常大的耳朵中......他们真的想要这个吗?

    除了将 Spring 和 Camel 添加到 WildFly 安装之外,还有两个选项:

    1. 如果 WildFly 所有者可以接受大的 ear 文件,您可以将带有 compileruntime 范围的 war 文件的所有需要​​的依赖项添加到 Maven Ear 项目 pom.xml 中。然后 Maven 会将所有依赖 jar 文件放入 ear 文件中,您就可以将它们用于您的应用程序。

      • 使用所有需要的 jar 文件创建您自己的 JBoss 模块。
      • 将其存储在 JBoss 模块目录中。
      • 在部署描述符 - jboss-deployment-structure.xml 文件中将该模块定义为您的 war 文件的依赖项。

    类似:

    <jboss-deployment-structure>
      ...
      <sub-deployment name="my-camel-app.war">
         <dependencies>
            <module name="com.mycompany.spring-camel.module" />
         </dependencies>
      </sub-deployment>
      ...
    </jboss-deployment-structure>
    

    这是做到这一点的最佳方式,WildFly 所有者无需担心这一点。只要 Spring 和 Camel 不在 WildFly 配置中,就没有人会使用它,只有在部署描述符中明确定义了对该模块的依赖关系的应用程序。

    PS。为 JBoss 创建一个模块并不难,你可以找到足够多的示例和说明...... 举个简单的例子:How to install a module on WildFly

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 2015-02-03
      • 2015-06-27
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 2020-02-10
      • 2018-03-19
      相关资源
      最近更新 更多