【问题标题】: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 中。我们该怎么做呢?
注意事项:
【问题讨论】:
标签:
java
spring
maven
apache-camel
wildfly
【解决方案1】:
也许您需要尝试一下 WildFly 的拥有者再考虑一下...
将Camel和Spring组合成fat jar文件并部署在ear中
有可能,但是……不太好
优点:无。
缺点:
除了将 Spring 和 Camel 添加到 WildFly 安装之外,还有两个选项:
如果 WildFly 所有者可以接受大的 ear 文件,您可以将带有 compile 或 runtime 范围的 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